diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000000..d9a750f7ebe3 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 844ab0f3b13ed01d931c7a4a151b1efd +tags: d77d1c0d9ca2f4c8421862c7c5a0d620 diff --git a/.doctrees/community.doctree b/.doctrees/community.doctree new file mode 100644 index 000000000000..9f38757f81bd Binary files /dev/null and b/.doctrees/community.doctree differ diff --git a/.doctrees/community/contributing.doctree b/.doctrees/community/contributing.doctree new file mode 100644 index 000000000000..8ff070ae1ccf Binary files /dev/null and b/.doctrees/community/contributing.doctree differ diff --git a/.doctrees/community/history.doctree b/.doctrees/community/history.doctree new file mode 100644 index 000000000000..f071130b5e4a Binary files /dev/null and b/.doctrees/community/history.doctree differ diff --git a/.doctrees/community/minibooks.doctree b/.doctrees/community/minibooks.doctree new file mode 100644 index 000000000000..5a9ea1c9bfde Binary files /dev/null and b/.doctrees/community/minibooks.doctree differ diff --git a/.doctrees/community/packages.doctree b/.doctrees/community/packages.doctree new file mode 100644 index 000000000000..a1d9a94adf79 Binary files /dev/null and b/.doctrees/community/packages.doctree differ diff --git a/.doctrees/compilers.doctree b/.doctrees/compilers.doctree new file mode 100644 index 000000000000..ca5f9f01c6ec Binary files /dev/null and b/.doctrees/compilers.doctree differ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 000000000000..68eb7af64ff1 Binary files /dev/null and b/.doctrees/environment.pickle differ diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 000000000000..445949ce8bba Binary files /dev/null and b/.doctrees/index.doctree differ diff --git a/.doctrees/learn.doctree b/.doctrees/learn.doctree new file mode 100644 index 000000000000..46dca8036891 Binary files /dev/null and b/.doctrees/learn.doctree differ diff --git a/.doctrees/learn/best_practices/allocatable_arrays.doctree b/.doctrees/learn/best_practices/allocatable_arrays.doctree new file mode 100644 index 000000000000..67b0ab4343ef Binary files /dev/null and b/.doctrees/learn/best_practices/allocatable_arrays.doctree differ diff --git a/.doctrees/learn/best_practices/arrays.doctree b/.doctrees/learn/best_practices/arrays.doctree new file mode 100644 index 000000000000..83087e72a191 Binary files /dev/null and b/.doctrees/learn/best_practices/arrays.doctree differ diff --git a/.doctrees/learn/best_practices/callbacks.doctree b/.doctrees/learn/best_practices/callbacks.doctree new file mode 100644 index 000000000000..9cf1284a28e9 Binary files /dev/null and b/.doctrees/learn/best_practices/callbacks.doctree differ diff --git a/.doctrees/learn/best_practices/element_operations.doctree b/.doctrees/learn/best_practices/element_operations.doctree new file mode 100644 index 000000000000..5f24a1cbee34 Binary files /dev/null and b/.doctrees/learn/best_practices/element_operations.doctree differ diff --git a/.doctrees/learn/best_practices/file_io.doctree b/.doctrees/learn/best_practices/file_io.doctree new file mode 100644 index 000000000000..d7c8978c8c1d Binary files /dev/null and b/.doctrees/learn/best_practices/file_io.doctree differ diff --git a/.doctrees/learn/best_practices/floating_point.doctree b/.doctrees/learn/best_practices/floating_point.doctree new file mode 100644 index 000000000000..727f6650238d Binary files /dev/null and b/.doctrees/learn/best_practices/floating_point.doctree differ diff --git a/.doctrees/learn/best_practices/index.doctree b/.doctrees/learn/best_practices/index.doctree new file mode 100644 index 000000000000..0fc2e4612648 Binary files /dev/null and b/.doctrees/learn/best_practices/index.doctree differ diff --git a/.doctrees/learn/best_practices/integer_division.doctree b/.doctrees/learn/best_practices/integer_division.doctree new file mode 100644 index 000000000000..fca00140053d Binary files /dev/null and b/.doctrees/learn/best_practices/integer_division.doctree differ diff --git a/.doctrees/learn/best_practices/modules_programs.doctree b/.doctrees/learn/best_practices/modules_programs.doctree new file mode 100644 index 000000000000..2a33831fcd32 Binary files /dev/null and b/.doctrees/learn/best_practices/modules_programs.doctree differ diff --git a/.doctrees/learn/best_practices/multidim_arrays.doctree b/.doctrees/learn/best_practices/multidim_arrays.doctree new file mode 100644 index 000000000000..c09a8175930e Binary files /dev/null and b/.doctrees/learn/best_practices/multidim_arrays.doctree differ diff --git a/.doctrees/learn/best_practices/style_guide.doctree b/.doctrees/learn/best_practices/style_guide.doctree new file mode 100644 index 000000000000..e214ac1bed3a Binary files /dev/null and b/.doctrees/learn/best_practices/style_guide.doctree differ diff --git a/.doctrees/learn/best_practices/type_casting.doctree b/.doctrees/learn/best_practices/type_casting.doctree new file mode 100644 index 000000000000..341ca769ae11 Binary files /dev/null and b/.doctrees/learn/best_practices/type_casting.doctree differ diff --git a/.doctrees/learn/building_programs/build_tools.doctree b/.doctrees/learn/building_programs/build_tools.doctree new file mode 100644 index 000000000000..d970224c85ae Binary files /dev/null and b/.doctrees/learn/building_programs/build_tools.doctree differ diff --git a/.doctrees/learn/building_programs/compiling_source.doctree b/.doctrees/learn/building_programs/compiling_source.doctree new file mode 100644 index 000000000000..43bc8f77b48a Binary files /dev/null and b/.doctrees/learn/building_programs/compiling_source.doctree differ diff --git a/.doctrees/learn/building_programs/distributing.doctree b/.doctrees/learn/building_programs/distributing.doctree new file mode 100644 index 000000000000..e736cc89f413 Binary files /dev/null and b/.doctrees/learn/building_programs/distributing.doctree differ diff --git a/.doctrees/learn/building_programs/include_files.doctree b/.doctrees/learn/building_programs/include_files.doctree new file mode 100644 index 000000000000..5d1c1113efdf Binary files /dev/null and b/.doctrees/learn/building_programs/include_files.doctree differ diff --git a/.doctrees/learn/building_programs/index.doctree b/.doctrees/learn/building_programs/index.doctree new file mode 100644 index 000000000000..bfdaff3eb690 Binary files /dev/null and b/.doctrees/learn/building_programs/index.doctree differ diff --git a/.doctrees/learn/building_programs/linking_pieces.doctree b/.doctrees/learn/building_programs/linking_pieces.doctree new file mode 100644 index 000000000000..a42ab9f6b8fa Binary files /dev/null and b/.doctrees/learn/building_programs/linking_pieces.doctree differ diff --git a/.doctrees/learn/building_programs/managing_libraries.doctree b/.doctrees/learn/building_programs/managing_libraries.doctree new file mode 100644 index 000000000000..eadd22b624f4 Binary files /dev/null and b/.doctrees/learn/building_programs/managing_libraries.doctree differ diff --git a/.doctrees/learn/building_programs/project_make.doctree b/.doctrees/learn/building_programs/project_make.doctree new file mode 100644 index 000000000000..6bd69c1813db Binary files /dev/null and b/.doctrees/learn/building_programs/project_make.doctree differ diff --git a/.doctrees/learn/building_programs/runtime_libraries.doctree b/.doctrees/learn/building_programs/runtime_libraries.doctree new file mode 100644 index 000000000000..12472933e8f4 Binary files /dev/null and b/.doctrees/learn/building_programs/runtime_libraries.doctree differ diff --git a/.doctrees/learn/intrinsics/array.doctree b/.doctrees/learn/intrinsics/array.doctree new file mode 100644 index 000000000000..2e1fdfe1225f Binary files /dev/null and b/.doctrees/learn/intrinsics/array.doctree differ diff --git a/.doctrees/learn/intrinsics/bit.doctree b/.doctrees/learn/intrinsics/bit.doctree new file mode 100644 index 000000000000..97920f3a9812 Binary files /dev/null and b/.doctrees/learn/intrinsics/bit.doctree differ diff --git a/.doctrees/learn/intrinsics/cfi.doctree b/.doctrees/learn/intrinsics/cfi.doctree new file mode 100644 index 000000000000..c7223b2793a7 Binary files /dev/null and b/.doctrees/learn/intrinsics/cfi.doctree differ diff --git a/.doctrees/learn/intrinsics/character.doctree b/.doctrees/learn/intrinsics/character.doctree new file mode 100644 index 000000000000..0703b6d98895 Binary files /dev/null and b/.doctrees/learn/intrinsics/character.doctree differ diff --git a/.doctrees/learn/intrinsics/compiler.doctree b/.doctrees/learn/intrinsics/compiler.doctree new file mode 100644 index 000000000000..36ff416e4407 Binary files /dev/null and b/.doctrees/learn/intrinsics/compiler.doctree differ diff --git a/.doctrees/learn/intrinsics/index.doctree b/.doctrees/learn/intrinsics/index.doctree new file mode 100644 index 000000000000..acac162fcdd8 Binary files /dev/null and b/.doctrees/learn/intrinsics/index.doctree differ diff --git a/.doctrees/learn/intrinsics/math.doctree b/.doctrees/learn/intrinsics/math.doctree new file mode 100644 index 000000000000..0f5071704344 Binary files /dev/null and b/.doctrees/learn/intrinsics/math.doctree differ diff --git a/.doctrees/learn/intrinsics/model.doctree b/.doctrees/learn/intrinsics/model.doctree new file mode 100644 index 000000000000..d27196247e78 Binary files /dev/null and b/.doctrees/learn/intrinsics/model.doctree differ diff --git a/.doctrees/learn/intrinsics/numeric.doctree b/.doctrees/learn/intrinsics/numeric.doctree new file mode 100644 index 000000000000..2583af8f4fd2 Binary files /dev/null and b/.doctrees/learn/intrinsics/numeric.doctree differ diff --git a/.doctrees/learn/intrinsics/parallel.doctree b/.doctrees/learn/intrinsics/parallel.doctree new file mode 100644 index 000000000000..e319b9e8b29a Binary files /dev/null and b/.doctrees/learn/intrinsics/parallel.doctree differ diff --git a/.doctrees/learn/intrinsics/state.doctree b/.doctrees/learn/intrinsics/state.doctree new file mode 100644 index 000000000000..381cacf4f4c9 Binary files /dev/null and b/.doctrees/learn/intrinsics/state.doctree differ diff --git a/.doctrees/learn/intrinsics/system.doctree b/.doctrees/learn/intrinsics/system.doctree new file mode 100644 index 000000000000..40c6e002064f Binary files /dev/null and b/.doctrees/learn/intrinsics/system.doctree differ diff --git a/.doctrees/learn/intrinsics/transform.doctree b/.doctrees/learn/intrinsics/transform.doctree new file mode 100644 index 000000000000..5fbe177eb9ab Binary files /dev/null and b/.doctrees/learn/intrinsics/transform.doctree differ diff --git a/.doctrees/learn/intrinsics/type.doctree b/.doctrees/learn/intrinsics/type.doctree new file mode 100644 index 000000000000..a0a743823661 Binary files /dev/null and b/.doctrees/learn/intrinsics/type.doctree differ diff --git a/.doctrees/learn/os_setup/choose_compiler.doctree b/.doctrees/learn/os_setup/choose_compiler.doctree new file mode 100644 index 000000000000..e9add53be915 Binary files /dev/null and b/.doctrees/learn/os_setup/choose_compiler.doctree differ diff --git a/.doctrees/learn/os_setup/ides.doctree b/.doctrees/learn/os_setup/ides.doctree new file mode 100644 index 000000000000..160b0e12f606 Binary files /dev/null and b/.doctrees/learn/os_setup/ides.doctree differ diff --git a/.doctrees/learn/os_setup/index.doctree b/.doctrees/learn/os_setup/index.doctree new file mode 100644 index 000000000000..ebe18f4d4c69 Binary files /dev/null and b/.doctrees/learn/os_setup/index.doctree differ diff --git a/.doctrees/learn/os_setup/install_gfortran.doctree b/.doctrees/learn/os_setup/install_gfortran.doctree new file mode 100644 index 000000000000..9d54a6addf61 Binary files /dev/null and b/.doctrees/learn/os_setup/install_gfortran.doctree differ diff --git a/.doctrees/learn/os_setup/text_editors.doctree b/.doctrees/learn/os_setup/text_editors.doctree new file mode 100644 index 000000000000..aeba3811c1d3 Binary files /dev/null and b/.doctrees/learn/os_setup/text_editors.doctree differ diff --git a/.doctrees/learn/os_setup/tips.doctree b/.doctrees/learn/os_setup/tips.doctree new file mode 100644 index 000000000000..9a959132a297 Binary files /dev/null and b/.doctrees/learn/os_setup/tips.doctree differ diff --git a/.doctrees/learn/quickstart/arrays_strings.doctree b/.doctrees/learn/quickstart/arrays_strings.doctree new file mode 100644 index 000000000000..b5888e22eb13 Binary files /dev/null and b/.doctrees/learn/quickstart/arrays_strings.doctree differ diff --git a/.doctrees/learn/quickstart/derived_types.doctree b/.doctrees/learn/quickstart/derived_types.doctree new file mode 100644 index 000000000000..daa056b07321 Binary files /dev/null and b/.doctrees/learn/quickstart/derived_types.doctree differ diff --git a/.doctrees/learn/quickstart/hello_world.doctree b/.doctrees/learn/quickstart/hello_world.doctree new file mode 100644 index 000000000000..b3d1efe1e64f Binary files /dev/null and b/.doctrees/learn/quickstart/hello_world.doctree differ diff --git a/.doctrees/learn/quickstart/index.doctree b/.doctrees/learn/quickstart/index.doctree new file mode 100644 index 000000000000..97d7d207e27b Binary files /dev/null and b/.doctrees/learn/quickstart/index.doctree differ diff --git a/.doctrees/learn/quickstart/operators_control_flow.doctree b/.doctrees/learn/quickstart/operators_control_flow.doctree new file mode 100644 index 000000000000..e45e76a1cd45 Binary files /dev/null and b/.doctrees/learn/quickstart/operators_control_flow.doctree differ diff --git a/.doctrees/learn/quickstart/organising_code.doctree b/.doctrees/learn/quickstart/organising_code.doctree new file mode 100644 index 000000000000..ba9dd8113f32 Binary files /dev/null and b/.doctrees/learn/quickstart/organising_code.doctree differ diff --git a/.doctrees/learn/quickstart/variables.doctree b/.doctrees/learn/quickstart/variables.doctree new file mode 100644 index 000000000000..b9cf29ff89f7 Binary files /dev/null and b/.doctrees/learn/quickstart/variables.doctree differ diff --git a/.doctrees/news.doctree b/.doctrees/news.doctree new file mode 100644 index 000000000000..9d182fcbbf86 Binary files /dev/null and b/.doctrees/news.doctree differ diff --git a/.doctrees/news/2020/02-28-J3-february-meeting.doctree b/.doctrees/news/2020/02-28-J3-february-meeting.doctree new file mode 100644 index 000000000000..d775bd1b428f Binary files /dev/null and b/.doctrees/news/2020/02-28-J3-february-meeting.doctree differ diff --git a/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree b/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree new file mode 100644 index 000000000000..4e14983329ee Binary files /dev/null and b/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree differ diff --git a/.doctrees/news/2020/04-18-Fortran-Webinar.doctree b/.doctrees/news/2020/04-18-Fortran-Webinar.doctree new file mode 100644 index 000000000000..f0fec6f98ec6 Binary files /dev/null and b/.doctrees/news/2020/04-18-Fortran-Webinar.doctree differ diff --git a/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree b/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree new file mode 100644 index 000000000000..61c59a7b3b7f Binary files /dev/null and b/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree differ diff --git a/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree b/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree new file mode 100644 index 000000000000..a174918bacea Binary files /dev/null and b/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree differ diff --git a/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree b/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree new file mode 100644 index 000000000000..d10d86702783 Binary files /dev/null and b/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree differ diff --git a/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree b/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree new file mode 100644 index 000000000000..b42f314ee5f7 Binary files /dev/null and b/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree differ diff --git a/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree b/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree new file mode 100644 index 000000000000..7a3ae20daa66 Binary files /dev/null and b/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree differ diff --git a/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree b/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree new file mode 100644 index 000000000000..5546b52b4e79 Binary files /dev/null and b/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree differ diff --git a/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree b/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree new file mode 100644 index 000000000000..05a79d0b5e0c Binary files /dev/null and b/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree differ diff --git a/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree b/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree new file mode 100644 index 000000000000..fa210648354b Binary files /dev/null and b/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree differ diff --git a/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree b/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree new file mode 100644 index 000000000000..2bb9b602bef1 Binary files /dev/null and b/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree differ diff --git a/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree b/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree new file mode 100644 index 000000000000..65f22ce96caf Binary files /dev/null and b/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree differ diff --git a/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree b/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree new file mode 100644 index 000000000000..d2bc88785fea Binary files /dev/null and b/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree differ diff --git a/.doctrees/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.doctree b/.doctrees/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.doctree new file mode 100644 index 000000000000..47036baf9003 Binary files /dev/null and b/.doctrees/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.doctree differ diff --git a/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree b/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree new file mode 100644 index 000000000000..5c5130bc830e Binary files /dev/null and b/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree differ diff --git a/.doctrees/news/2021/04-20-First-Year.doctree b/.doctrees/news/2021/04-20-First-Year.doctree new file mode 100644 index 000000000000..9e3cfce8fab4 Binary files /dev/null and b/.doctrees/news/2021/04-20-First-Year.doctree differ diff --git a/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree b/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree new file mode 100644 index 000000000000..e91dd41eca13 Binary files /dev/null and b/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree differ diff --git a/.doctrees/news/2021/05-18-Welcome-GSoC-students.doctree b/.doctrees/news/2021/05-18-Welcome-GSoC-students.doctree new file mode 100644 index 000000000000..fa2df2918855 Binary files /dev/null and b/.doctrees/news/2021/05-18-Welcome-GSoC-students.doctree differ diff --git a/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree b/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree new file mode 100644 index 000000000000..58868e1524eb Binary files /dev/null and b/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree differ diff --git a/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree b/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree new file mode 100644 index 000000000000..b18f715ccecc Binary files /dev/null and b/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree differ diff --git a/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree b/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree new file mode 100644 index 000000000000..56a7f06a364a Binary files /dev/null and b/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree differ diff --git a/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree b/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree new file mode 100644 index 000000000000..6a9ae8244512 Binary files /dev/null and b/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree differ diff --git a/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree b/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree new file mode 100644 index 000000000000..be49a5c115c2 Binary files /dev/null and b/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree differ diff --git a/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree b/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree new file mode 100644 index 000000000000..585ff633ee26 Binary files /dev/null and b/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree differ diff --git a/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree b/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree new file mode 100644 index 000000000000..903e1bd0ae3a Binary files /dev/null and b/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree differ diff --git a/.doctrees/news/2021/12-29-Fortran-lang-2021-in-review.doctree b/.doctrees/news/2021/12-29-Fortran-lang-2021-in-review.doctree new file mode 100644 index 000000000000..ddce0e1d8bbe Binary files /dev/null and b/.doctrees/news/2021/12-29-Fortran-lang-2021-in-review.doctree differ diff --git a/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree b/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree new file mode 100644 index 000000000000..c0fab521c88f Binary files /dev/null and b/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree differ diff --git a/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree b/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree new file mode 100644 index 000000000000..181415a4359d Binary files /dev/null and b/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree differ diff --git a/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree b/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree new file mode 100644 index 000000000000..351ab4801c39 Binary files /dev/null and b/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree differ diff --git a/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree b/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree new file mode 100644 index 000000000000..fbebd65ef29a Binary files /dev/null and b/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree differ diff --git a/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree b/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree new file mode 100644 index 000000000000..f796e1f01d0f Binary files /dev/null and b/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree differ diff --git a/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree b/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree new file mode 100644 index 000000000000..0953649e61dc Binary files /dev/null and b/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree differ diff --git a/.doctrees/packages.doctree b/.doctrees/packages.doctree new file mode 100644 index 000000000000..a1e3810e4e9c Binary files /dev/null and b/.doctrees/packages.doctree differ diff --git a/.doctrees/packages/data-types.doctree b/.doctrees/packages/data-types.doctree new file mode 100644 index 000000000000..5250a12d8035 Binary files /dev/null and b/.doctrees/packages/data-types.doctree differ diff --git a/.doctrees/packages/examples.doctree b/.doctrees/packages/examples.doctree new file mode 100644 index 000000000000..2caa04e2cc7a Binary files /dev/null and b/.doctrees/packages/examples.doctree differ diff --git a/.doctrees/packages/graphics.doctree b/.doctrees/packages/graphics.doctree new file mode 100644 index 000000000000..f3d96d778918 Binary files /dev/null and b/.doctrees/packages/graphics.doctree differ diff --git a/.doctrees/packages/interfaces.doctree b/.doctrees/packages/interfaces.doctree new file mode 100644 index 000000000000..6da79f81bce0 Binary files /dev/null and b/.doctrees/packages/interfaces.doctree differ diff --git a/.doctrees/packages/io.doctree b/.doctrees/packages/io.doctree new file mode 100644 index 000000000000..48e7e9941e10 Binary files /dev/null and b/.doctrees/packages/io.doctree differ diff --git a/.doctrees/packages/libraries.doctree b/.doctrees/packages/libraries.doctree new file mode 100644 index 000000000000..191bef0c3554 Binary files /dev/null and b/.doctrees/packages/libraries.doctree differ diff --git a/.doctrees/packages/numerical.doctree b/.doctrees/packages/numerical.doctree new file mode 100644 index 000000000000..b0080eba6383 Binary files /dev/null and b/.doctrees/packages/numerical.doctree differ diff --git a/.doctrees/packages/programming.doctree b/.doctrees/packages/programming.doctree new file mode 100644 index 000000000000..0217c3508bdb Binary files /dev/null and b/.doctrees/packages/programming.doctree differ diff --git a/.doctrees/packages/scientific.doctree b/.doctrees/packages/scientific.doctree new file mode 100644 index 000000000000..c721c64f9b6e Binary files /dev/null and b/.doctrees/packages/scientific.doctree differ diff --git a/.doctrees/packages/strings.doctree b/.doctrees/packages/strings.doctree new file mode 100644 index 000000000000..85e3a2e60b88 Binary files /dev/null and b/.doctrees/packages/strings.doctree differ diff --git a/.doctrees/roadmap.doctree b/.doctrees/roadmap.doctree new file mode 100644 index 000000000000..c659ae3b921b Binary files /dev/null and b/.doctrees/roadmap.doctree differ diff --git a/BingSiteAuth.xml b/BingSiteAuth.xml index 1d68adbb23ba..8151ede59bf2 100644 --- a/BingSiteAuth.xml +++ b/BingSiteAuth.xml @@ -1 +1 @@ -A2502A09101EE028158E1850D3BA90CE + diff --git a/_sources/community.md.txt b/_sources/community.md.txt new file mode 100644 index 000000000000..967d44db69ab --- /dev/null +++ b/_sources/community.md.txt @@ -0,0 +1,209 @@ +--- +sd_hide_title: true +--- + + + + + + +# Community + +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Fortran-lang Community +::: + +:::{div} sd-text-center sd-fs-3 +Collaboration for the advancement of Fortran +::: + +:::{div} sd-text-left sd-fs-2 sd-text-primary +Fortran-lang Community Projects +::: + +:::::{grid} 2 + +::::{grid-item-card} +:columns: 5 +:shadow: none + +:::{div} sd-text-left sd-fs-4 +Fortran Standard Library (stdlib) +::: + +A community-driven project for a de facto 'standard' library for Fortran. The stdlib project is both a specification and a reference implementation, developed in cooperation with the Fortran Standards Committee. +[GitHub](https://github.com/fortran-lang/stdlib),[Documentation](https://stdlib.fortran-lang.org/),[Contributing](https://github.com/fortran-lang/stdlib/blob/HEAD/WORKFLOW.md). + +:::{div} sd-text-left sd-fs-4 +Fortran Package Manager (fpm) +::: + +A prototype project to develop a common build system for Fortran packages and their dependencies. +[GitHub](https://github.com/fortran-lang/fpm),[Documentation](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md),[Contributing](https://github.com/fortran-lang/fpm/blob/HEAD/CONTRIBUTING.md). + +:::{div} sd-text-left sd-fs-4 +fortran-lang.org +::: + +This website is open source and contributions are welcome!. +[GitHub](https://github.com/fortran-lang/webpage),[Contributing](../community/contributing). + +:::: +::::{grid-item-card} +:columns: 7 +:shadow: none + +
+ + + +:::: +::::: + +:::{div} sd-text-left sd-fs-2 sd-text-primary +History +::: + +The effort to build a new community around Fortran started at the beginning of 2020 +and was initially led by Ondřej Čertík [[1]][blog-ondrej] and Milan Curcic [[2]][blog-milan]. +Starting in several discussions around ambitious proposals for the Fortran Standards +Committee, the Fortran Standard Library (`stdlib`) [[3]][issue-stdlib], the Fortran +Package Manager (`fpm`) [[4]][issue-fpm] and the [`fortran-lang.org`][webpage-orig] +webpage with new logo [[5]][issue-logo] were created. +With the new webpage and projects attracting more contributors, the Fortran-lang discourse +was created to provide a place for general discussions around all the things Fortran, +announcing newly started projects, getting help, etc. +Since its creation the Fortran-lang community was joined by hundreds of contributors. + +[Read more](../community/history) + +[blog-ondrej]: https://ondrejcertik.com/blog/2021/03/resurrecting-fortran/ +[blog-milan]: https://medium.com/modern-fortran/first-year-of-fortran-lang-d8796bfa0067 +[issue-fpm]: https://github.com/j3-fortran/fortran_proposals/issues/55 +[issue-stdlib]: https://github.com/j3-fortran/fortran_proposals/issues/104 +[issue-logo]: https://github.com/j3-fortran/fortran_proposals/issues/47 +[webpage-orig]: https://web.archive.org/web/20200504000648/https://fortran-lang.org/ + +:::{div} sd-text-left sd-fs-2 sd-text-primary +Get Involved +::: + +:::::{grid} 2 +:gutter: 1 + +::::{grid-item-card} +:shadow: none + +:::{div} sd-text-left sd-fs-4 +Join the Discussion +::: + +The easiest way to join the community and contribute is by +commenting on issues and pull requests in the project +repositories. + +Whether Fortran beginner or seasoned veteran, your feedback and comments are most +welcome in guiding the future of Fortran-lang. + +:::: + +::::{grid-item-card} +:shadow: none + +:::{div} sd-text-left sd-fs-4 +Build and Test +::: + +Get more involved with each project by cloning, building and testing +it on your own machine(s) and with your own codes; +if something doesn't work, create an issue to let us know! +We value user feedback highly, be it a bug report, feature request, or +suggestion for documentation. + +:::: + +::::{grid-item-card} +:shadow: none + +:::{div} sd-text-left sd-fs-4 +Contributor Guide +::: + +Want to contribute code and content? +Check out the contributor guides in each repository for information +on the project workflow and recommended practices. + +[Contributor guide for stdlib](https://github.com/fortran-lang/stdlib/blob/HEAD/WORKFLOW.md)
+[Contributor guide for fpm](https://github.com/fortran-lang/fpm/blob/HEAD/CONTRIBUTING.md)
+[Contributor guide for fortran-lang.org](community/contributing) + +:::: +::::{grid-item-card} +:shadow: none + +:::{div} sd-text-left sd-fs-4 +Community Conduct +::: + +As a community, we strive to make participation in our discussions and projects a friendly and harassment-free experience for everyone. +See the full [Code of Conduct](https://github.com/fortran-lang/.github/blob/main/CODE_OF_CONDUCT.md). + +:::: + +::::: + +:::{div} sd-text-left sd-fs-2 sd-text-primary +Fortran-lang Contributors +::: + + + +:::{div} sd-text-left sd-fs-3 +source: https://git-contributor.com/ +::: + +:::{div} sd-text-left sd-fs-4 sd-text-primary +Contributors: +::: + +::::::{jinja} contributors + +:::::{grid} 6 +:gutter: 1 +{% for j in contributor | batch(6, ' ') %} + +{% for i in j %} +{% if i != ' ' %} + +::::{grid-item-card} +:shadow: none + +:::{grid-item-card} [{{i}}]({{"https://github.com/"+i}}) +:shadow: none +:img-top: https://github.com/{{i}}.png?size=100 +:shadow: none +:text-align: center +::: +:::: + +{% endif %} +{% endfor %} +{% endfor %} + +::::: + +:::::: + +:::{toctree} +:hidden: +community/history +community/contributing +community/minibooks +community/packages +::: diff --git a/_sources/community/contributing.md.txt b/_sources/community/contributing.md.txt new file mode 100644 index 000000000000..5b32d81e8c5a --- /dev/null +++ b/_sources/community/contributing.md.txt @@ -0,0 +1,303 @@ +# Contributing to fortran-lang.org + +Fortran-lang.org is open-source and contributions are welcome! + +- See [package index guide](packages) for how to add an entry to the [Package index](/packages) + +- See [minibook guide](minibooks) for how to write and structure a mini-book tutorial for the [Learn](/learn) section + +## Introduction + +**How is the site written?** + +The content of the website is primarily written in a combination of Markdown (Myst flavoured), HTML and YAML (for data). +This source is compiled to produce pure HTML which is what you see on the final website. + +The website is _static_ which means that once built, the content on the site is the same for all users; +this is in contrast to many websites that are _dynamic_, meaning they can serve different content +depending on the user and the inputs supplied by the user. + +Structural components of the website are written in the Sphinx Static site generator for static features, and JavaScript for dynamic features. + +**Do I need to know HTML to contribute?** + +The majority of the site content is written in [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet), a simple markup language for formatting text - don't worry if you haven't used it before, it's very easy to pick up! + +**How is the site built?** + +The Fortran-lang site uses the Python-based [Sphinx static site generator](https://www.sphinx-doc.org/en/master/) to compile the RST,Markdown and HTML files. +It is recommended for contributors to install Python on your development computer so that changes can be previewed locally, however this is not mandatory since site previews can be generated during the pull request process (see below for more information). +See [README.md](https://github.com/fortran-lang/webpage/blob/HEAD/README.md) for how to setup Sphinx and build the site. + +The GitHub repository default branch only ever contains the 'source code' for the website, not the final compiled result; an automated service compiles this source code every time an update is pushed and stores the compiled result on the [`gh-pages`](https://github.com/fortran-lang/webpage/tree/gh-pages) branch which is served up at . + +Therefore, as a contributor you only need to upload changes to the site source code and not the compiled result, because this is built automatically from the source code on the default branch. + +## Workflow + +Contributions to the site are made by pull request to the github repository: . + +The workflow for doing so takes the following form: + +1. Create/update a personal fork of webpage + + - (See [github help: syncing a fork](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/syncing-a-fork) ) + +2. Create a new branch in your fork + + - The branch name should concisely describe your contribution, _e.g._ `fix-spelling-homepage`, `update-compiler-info` + +3. Perform your changes on the local branch + +4. Push your modified branch to your fork + + - _e.g._ `git push --set-upstream origin fix-spelling-homepage` + +5. Create a pull request in the fortran-lang/webpage from your modified fork branch + - (See [github help: creating a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) ) + +**Note: Before opening a pull request you must build your changes locally using Sphinx (see [README.md](https://github.com/fortran-lang/webpage/HEAD/blob/README.md)) to verify that your changes build correctly and render as you expect.** + +**Note: You can continue to push changes to your fork branch after you open a pull request - the pull request will update accordingly** + +Your pull request will be reviewed by other members of the community who may request changes. +GitHub provides an easy interface on its website to apply (or reject) any reviewer-suggested changes with a click of a button. +This avoids having to manually copy suggestions to your local copy and push back again. +If you use the "Commit suggestion" button, you will need to update the local copy on your computer using `git pull` if you intend to push more edits from your computer. + +Once your pull request is approved, usually by at least two other community members, it will be merged into the webpage default branch by the maintainers at which point it will be published to the fortran-lang.org site. + +If required, the repository maintainers can build a public preview of your proposed changes which will be available to view at `fortran-lang.org/pr//` where `` is the numeric identifier of your pull request. + +This allows reviewers to directly view the generated result of your PR. + +**Note:** if you push subsequent commits to your pull request branch, you must rebuild the pull request preview by commenting on +the pull request with '#build_preview'. + +After a pull request has been merged and successfully rendered, the workflows will delete the preview build. + +**Note:** if your pull request preview link doesn't work or doesn't update after re-building, try adding a random parameter to the end of the URL, _e.g._ `https://fortran-lang.org/pr/98?v=2` - the name and value of the parameter don't matter, but use different values for each update. +This will force the GitHub content delivery network to serve you an updated version instead of a cached version which is out-of-date. + +## Style guide + +### Markdown + +- Place code excerpts in [code blocks](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code-and-syntax-highlighting), + denoted by back ticks (` ``` `). Use inline code style (`` `code` ``) for inline code excerpts, programming language keywords, variables names and file names. + +- Have no more than one sentence per source-code line, and break-up long sentences across multiples lines - + this is important to avoid large git diffs and code review blocks on github. + +### External links + +It is recommended practice for off-site hyperlinks to open in a new tab. +On `Fortran-lang.org` all such links will automatically be suffixed with a new-tab icon; +this gives site users prior expectation that the link will lead them off-site while keeping fortran-lang.org open in a previous tab. + +**Example:** Open link in new tab (HTML or markdown) + +```html +Discourse +``` + +### Internal site links + +Hyperlinks that point to other parts of the fortran-lang.org website should be prefixed with `{{pathto('index',1)[:-5]}}` - this is important for generating pull request previews (see [here](https://byparker.com/blog/2014/clearing-up-confusion-around-baseurl/) for an explanation). + +**Example:** markdown link + +``` +[Fortran-lang news]({{pathto('index',1)[:-5]}}News) +``` + +**Example:** html link + +``` +Fortran packages +``` + +### Icon packs + +Icons are an easy way to improve page aesthetic by breaking-up otherwise monotonic text passages and drawing attention to headings or key information. + +Three icon packs are available for use on `fortran-lang.org`: +- [Sphinx-design](https://sphinx-design.readthedocs.io/en/sbt-theme/badges_buttons.html#inline-icons) (MIT License) + +- [Font awesome](https://fontawesome.com/icons?d=gallery) (CC BY 4.0 License) + + +**Example:** Font awesome + +```html + +``` + +**Example:** Sphinx design Myst directives + +```md +{octicon}`book;1em;sd-text-info` +``` + +Visit the respective websites to browse available icons. + +### Page contents + +It is sometimes helpful to display hyperlinked page contents for lengthy pages. The page TOC tree has been automated and will generate the TOC of the current page. Whereas the method to generate TOC of the entire directory on `Fortran-lang.org` is: + +**For pages in MD:** + +add the toc tree directive in md at the end of the index page of the directory with the names of the all files in that directory. + +
+````{toctree}  
+:hidden:
+ARRAY_index 
+```` 
+
+ +## Tutorials + +Guidelines for mini-book content. + +### General + +Use the `book` layout. + +Follow the [Markdown guidelines](#markdown). + +### Code style + +Use two spaces for indentation, indenting bodies of units but keeping the `contains` statement at the same level as its `module` or `type`. Try to limit line length to 90 characters. These considerations should make the code more readable and easier to view on devices with smaller viewport widths. + +```fortran +module m + implicit none + private + public :: a_t + + type :: a_t + integer :: val + contains + procedure :: func + end type a_t + +contains + + subroutine func(self) + class(a_t), intent(in) :: self + if (self%val > 0) then + print *, self%val + end if + end function func + +end module m +``` + +Each code block should have a base indentation level of 0, even if it would be indented if put into a larger context. + +```fortran +integer :: i1 ! yes + integer :: i2 ! no +``` + +Avoid vertically aligning `::` and inline comments since this adds maintenance burden and pushes the line length in most cases. + +If a code block contains lines that are not valid Fortran, leave it as a language-less code block to avoid the syntax highlighter's red boxes. + +``` +module +... +end module +``` + +Feel free to omit spacing in expressions where it helps with readability, but generally include whitespace around operators. + +```fortran +y1 = a * b +y2 = a*b + c*d ! instead of a * b + c * d +y3 = a**2 + 1 +y4 = (a*b + c*d) / 2 +s3 = s1 // s2 +``` + +Generally add a space after commas, except when indexing with short index values or variables names. + +```fortran +a(:,1) +a2(1:10, 2:5) +b(i,j) +b2(long_i_name, long_j_name) +b3(i + 2, j) +call some_subroutine(a, b, an_option=.false.) +c = [1, 2, 3, 10] +d = [(i, i = 1, 10)] +do i = 1, 10 +! ... +``` + +Other situations besides simple indexings where white space can be omitted: + +- Aliasing in imports + ```fortran + use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double + ``` +- String concatentation + ```fortran + print *, 'hello '//'world' + ``` +- Accessing components (attributes) of derived types + ```fortran + p%x + p%calc_something(a, b) + ``` +- Around `=` when passing keyword arguments + ```fortran + call sr(a, b, c=3) + point = t_point(x=1., y=2.) + character(len=:), allocatable :: s + ``` + +Capitalize the first letter for inline comments except for trailing inline comments that only consist of one word or a short phrase. + +```fortran +! Compute new values +y = m*x + b ! meters +``` + +These code style recommendations are similar to those in [the DFTB+ style guide](https://dftbplus-develguide.readthedocs.io/en/latest/fortranstyle.html). + +### Text + +Use sentence case (as opposed to title case) for page and section titles. + +Use _emphasis_ (`*emphasis*`/`_emphasis_`, rendered as italic) for key words/phrases when they are first introduced, for emphasis, ... + +Avoid use of **strong** (`**strong**`, rendered as bold) within paragraphs, since bold style is used for headings, drawing attention to examples (**Example:**), admonition/aside titles, etc. + +Make use of the admonition/aside (_note_, _tip_, _important_) where appropriate. + +- to add a **note** to md document use: +
+::::{note}
+extra information, something that might appear in a footnote
+::::: 
+
+- to add a **tip** to md document use: +
+::::{tip}
+information about best practices, practical tips
+::::: 
+
+- to add an **important** text to md document use: +
+::::{importrant}
+warnings, things to avoid, etc.
+::::: 
+
+ +Prefer including the [Oxford comma](https://en.wikipedia.org/wiki/Serial_comma). It usually makes things more clear. + +> Fortran is fast, fun, and famed. diff --git a/_sources/community/history.md.txt b/_sources/community/history.md.txt new file mode 100644 index 000000000000..b628de472c0e --- /dev/null +++ b/_sources/community/history.md.txt @@ -0,0 +1,109 @@ +# Fortran-lang history + +## Creation + +The effort to build a new community around Fortran started at the beginning of 2020 +and was initially led by Ondřej Čertík [[1]][blog-ondrej] and Milan Curcic [[2]][blog-milan]. +Starting in several discussions around ambitious proposals for the Fortran Standards +Committee, the Fortran Standard Library (`stdlib`) [[3]][issue-stdlib], the Fortran +Package Manager (`fpm`) [[4]][issue-fpm] and the [`fortran-lang.org`][webpage-orig] +webpage with new logo [[5]][issue-logo] were created. +With the new webpage and projects attracting more contributors, the Fortran-lang discourse +was created to provide a place for general discussions around all the things Fortran, +announcing newly started projects, getting help, etc. +Since its creation the Fortran-lang community was joined by hundreds of contributors. + +[blog-ondrej]: https://ondrejcertik.com/blog/2021/03/resurrecting-fortran/ +[blog-milan]: https://medium.com/modern-fortran/first-year-of-fortran-lang-d8796bfa0067 +[issue-fpm]: https://github.com/j3-fortran/fortran_proposals/issues/55 +[issue-stdlib]: https://github.com/j3-fortran/fortran_proposals/issues/104 +[issue-logo]: https://github.com/j3-fortran/fortran_proposals/issues/47 +[webpage-orig]: https://web.archive.org/web/20200504000648/https://fortran-lang.org/ + +## Incubator J3 repo + +## The Fortran Standard Library `stdlib` + +Created in the late 2019 the Fortran Standard Library provides +a community driven and agreed upon de facto "standard" library for Fortran. +The library is a collection of modules that provide a wide range of +functionality, including: containers, sorting, searching, linear algebra, +unities, fast Fourier transforms, and more. + +Find out more about `stdlib` on our [website](https://stdlib.fortran-lang.org/) +and on [GitHub](https://github.com/fortran-lang/stdlib). + +## The Fortran Package Manager `fpm` + +Fortran Package Manager (fpm) is a package manager and build system for Fortran. +Its key goal is to improve the user experience of Fortran programmers. +It does so by making it easier to build your Fortran program or library, run the +executables, tests, and examples, and distribute it as a dependency to other +Fortran projects. +Fpm's user interface is modeled after [Rust's Cargo](https://doc.rust-lang.org/cargo/), +so if you're familiar with that tool, you will feel at home with fpm. +Fpm's long term vision is to nurture and grow the ecosystem of modern Fortran +applications and libraries. + +## Fortran Discourse + +## Fortran Package Index + +## Project migration to Fortran-lang + +Over time crucial projects to the Fortran community were migrated to the +Fortran-lang organization to allow for community collaboration and to ensure +long-term sustainability of the projects. + +### fftpack + +### minipack + +### test-drive + +### vscode-fortran-support + + + +Modern Fortran for Visual Studio Code is feature-rich Visual extension +for Fortran originally created by +Miguel Carvajal and maintained by Giannis Nikiteas. +The extension migrated in early 2022 to the Fortran-lang organization +to improve integration with other Fortran-lang projects such as `fpm` +and allow for easier community collaboration. + +Find out more about Modern Fortran for Visual Studio Code on +[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=fortran-lang.linter-gfortran) +and on [GitHub](httos://github.com/fortran-lang/vscode-fortran-support). + +### fortls + + + +`fortls` is a Fortran language server created by Giannis Nikiteas +in late 2019. The project started as a fork of the +archived project `fortran-language-server` but quickly diverged from it +both in terms of features and codebase. The project migrated to the +Fortran-lang organization in late 2022 to allow for easier community +collaboration. + +Find out more about `fortls` on our [website](https://fortls.fortran-lang.org/) +and on [GitHub](https://github.com/fortran-lang/fortls). + +## Fortran Publication + +In April 2022, members of the Fortran-lang community published a paper in +Computing in Science & Engineering titled [_The State of Fortran_][pub-state-of-fortran] +providing an overview of the language and its ecosystem. +The paper focused on the ongoing efforts +of developing the Fortran standard library ([`stdlib`][webpage-stdlib]) +and the Fortran package manager ([`fpm`][webpage-fpm]), +fostering a friendly and welcoming community online ([`Fortran-lang Discourse`][discourse]), +improving compiler support and language feature development. + +[pub-state-of-fortran]: https://ieeexplore.ieee.org/document/9736688 +[discourse]: https://fortran-lang.discourse.group/ +[webpage-fpm]: https://fpm.fortran-lang.org/ +[webpage-stdlib]: https://stdlib.fortran-lang.org/ + +## Conferences and Events diff --git a/_sources/community/minibooks.md.txt b/_sources/community/minibooks.md.txt new file mode 100644 index 000000000000..ae67ab60f25c --- /dev/null +++ b/_sources/community/minibooks.md.txt @@ -0,0 +1,266 @@ +# Mini-book Tutorials on fortran-lang.org + +This guide will cover how to write mini-book tutorials for the [Learn](https://fortran-lang.org/learn) +section of . + +See [contributing guidelines](contributing) for general guidance on contributing to . + +## 0. Mini-book formats + +Mini-books are designed to be mostly self-contained tutorials on a particular feature of the Fortran language. + +There are two types of mini-book format: + +- **Single-page:** all content is written within a single markdown file and displayed + on a single webpage; + +- **Multi-page:** tutorial content is written across multiple markdown files and displayed + as a collection of webpages. + +The choice of book type depends on the length of your content and how you intend to structure it. + +Consider the table of contents that will be produced: + +- Single-page books have **one level** of navigation: a link for each heading in the tutorial in inpage-toc (toc on the right hand side of the page). + +- Multi-page books have **two levels** of navigation: a link for each heading in the tutorial in inpage-toc (toc on the right hand side of the page) and sidebar-toc (toc on the left hand side of the page showing different pages in directory). + +Single-page mini-books are simpler to produce and should be used for brief topics or short tutorials that will +eventually be subsumed into a more-comprehensive multi-page book. + +Multi-page books are recommended for more-comprehensive tutorials that can be structured with one subtopic per page. + +The rest of this guide is split into two sections, one each for the single-page and multi-page book types. + +## 1. Single-page mini-book + +The steps required for publishing a single-page mini-book are: + +- Create a new markdown document in the `./learn` directory + +- Write your tutorial content + +- Add an entry to [data/learning.yml](./data/learning.yml) for your new mini-book + +- Open a pull request + +### 1.1 Writing your mini-book in markdown + +For single-page mini-books your tutorial will be entirely contained within a single markdown document. + +First create a new markdown document in the `./learn/{{name_of_minibook}}/` directory with the `.md` file extension +and a short name that concisely describes the topic of your tutorial, _e.g._ `./learn/{{name_of_minibook}}/file_io.md`. + +Open your new markdown file and append an entry in the toc of `learn.md` in the following format: + +``` +:::{toctree} +:hidden: + +learn/quickstart/index +learn/best_practices/index +learn/os_setup/index +learn/building_programs/index +learn/intrinsics/index +learn/{{book-filename}} +::: +``` + +Replace `{{book-filename}}` with the filename of your markdown file +but **excluding the `.md` extension**. There should also be no trailing slash. + +**Example:** header + +``` +:::{toctree} +:hidden: + +learn/quickstart/index +learn/best_practices/index +learn/os_setup/index +learn/building_programs/index +learn/intrinsics/index +learn/file_io +::: +``` + +**NOT:** `permalink: /learn/file_io.md` + +**NOT:** `permalink: /learn/file_io/` + +You can now fill the rest of the file with your tutorial content written in markdown; +see [Kramdown syntax](https://kramdown.gettalong.org/syntax.html) for documentation on +the markdown implementation. + +### 1.2 Structuring your mini-book with headings + +You should use headings to break-up your single-page mini-book into a logical structure. +Each heading will show up in the hyperlinked table-of-contents. + +In markdown, headings can be written as: + +```markdown +# Heading level 1 + +## Heading level 2 + +### Heading level 3 + +#### Heading level 4 + +##### Heading level 5 + +###### Heading level 6 +``` + +**Note:** make sure to include a blank line before your heading. + +### 1.3 Add your mini-book to the Learn page + +To add your new mini-book to the _Learn_ page, you need to add a new entry +in the [data/learning.yml](./data/learning.yml) datafile. + +Open this file and create a new entry under the `books:` field in the following format: + +```yaml +- title: {{book-title}} + description: {{book-description}} + category: {{book-category}} + link: /learn/{{book-filename}} +``` + +The `title` field is what will be displayed on the _Learn_ page for your mini-book +and should generally be the same as the `title` field in your markdown file, but this isn't required. + +The contents of the `description` field is also displayed on the _Learn_ page +and should briefly summarise the contents of your mini-book tutorial. + +The `category` field should match one of the categories listed at the top of the data file (under +the `categories:` field) and is used to group tutorials on the Learn page. + +The `link` field should exactly match the `permalink` field in your markdown document. + +**Example:** `learning.yml` book entry + +```yaml +- title: File input and output + description: A tutorial on reading and writing files in Fortran + category: Getting started + link: /learn/file/file_io +``` + +Save the modified `learning.yml` data file and run fortran_package.py and rebuild the website on your local machine to check the results. +If successful, a new link should appear on the \_Learn* page with the title of your new mini-book. + +Once you have completed your mini-book and added an entry to the `learning.yml` data file, open a pull request +at (see [CONTRIBUTING](./CONTRIBUTING.md)). + +## 2. Multi-page mini-books + +The steps required for publishing a multi-page mini-book are: + +- Create a new folder in the `./learn/` directory + +- Create an `index.md` file in your new folder + +- Write your tutorial content in markdown files in your new folder + +- Add an entry to [data/learning.yml](./data/learning.yml) for your new mini-book + +- Open a pull request + +### 2.1 Create a new folder for your mini-book + +Create a new folder in the `./learn/` directory with a short name that concisely describes the topic of your tutorial, _e.g._ `./learn/coarrays/`. +All pages of your mini-book will be contained within this folder. + +The first page of your mini-book should be called `index.md`, so create a new markdown file in +your mini-book folder called `index.md`, and add a toc in the following format in all the markdown files: + +``` +:::{toctree} +:hidden: + +file1 +file2 +::: +``` + +**There should be no trailing slash.** + +**Example:** toc for `index.md` + +``` +:::{toctree} +:hidden: + +learn/quickstart/index +learn/best_practices/index +learn/os_setup/index +learn/building_programs/index +learn/intrinsics/index +::: +``` + +**NOT:** `permalink: /learn/coarrays/` + + +you should populate the remainder of `index.md` with an introduction to your mini-book tutorial which may include: a summary of the concepts covered; any prerequisites; and any references to other related mini-books or useful third-party resources. + +### 2.2 Add pages to your mini-book + +For each new page in your mini-book, create a new markdown file in your mini-book folder. + +As with single-page mini-books, you should use headings to break-up each +page into a logical structure. +Each heading on the current page will show up in the inpage table-of-contents. + +### 2.3 Add your mini-book to the Learn page + +To add your new mini-book to the _Learn_ page, you need to add a new entry +in the [data/learning.yml](./data/learning.yml) datafile. + +Open this file and create a new entry under the `books:` field in the following format: + +```yaml +- title: {{book-title}} + description: {{book-description}} + category: {{book-category}} + link: /learn/{{book-folder}} + pages: + - link: /learn/{{book-folder}}/{{page1-filename}} + - link: /learn/{{book-folder}}/{{page2-filename}} + - link: /learn/{{book-folder}}/{{page3-filename}} +``` + +The `title` field is what will be displayed on the _Learn_ page for your mini-book +and should generally be the same as the `title` field in your `index.md` markdown file, but this isn't required. + +The contents of the `description` field is also displayed on the _Learn_ page +and should briefly summarise the contents of your mini-book tutorial. + +The `category` field should match one of the categories listed at the top of the data file (under +the `categories:` field) and is used to group tutorials on the Learn page. + +The top-level `link` field should exactly match the `permalink` field in your `index.md` file. + +Each `link` field under `pages` should exactly match the `permalink` field in each of your subsequent mini-book pages. + +**Example:** `learning.yml` book entry + +```yaml +- title: Parallel programming with Coarrays + description: A tutorial on parallel programming using coarrays + category: Parallel programming + link: /learn/coarrays + pages: + - link: /learn/coarrays/background + - link: /learn/coarrays/codimension + - link: /learn/coarrays/examples +``` + +Save the modified `learning.yml` data file and run fortran*package.py and rebuild the website on your local machine to check the results. +If successful, a new link should appear on the \_Learn* page with the title of your new mini-book. + +Once you have completed your mini-book and added an entry to the `learning.yml` data file, open a pull request +at (see [CONTRIBUTING](./CONTRIBUTING.md)). diff --git a/_sources/community/packages.md.txt b/_sources/community/packages.md.txt new file mode 100644 index 000000000000..072012203835 --- /dev/null +++ b/_sources/community/packages.md.txt @@ -0,0 +1,151 @@ +# Fortran-lang.org package index + +## Package criteria + +The following criteria are required of packages to be indexed: + +- **Relevance**: the package must be primarily implemented in Fortran or provide + a complete Fortran interface to an existing package or be purposed solely towards + software development in Fortran. + +- **Maturity**: the primary functionality of the package shall be implemented. + No prototype, testing or partially complete packages will be accepted. + If the package is hosted on github or similar, it should have at least 5 'stars'. + +- **Availability**: the package source shall be freely available for browsing online + or cloning or downloading + +- **Open source**: the package shall be licensed under an appropriate [open-source license](https://opensource.org/licenses) + with the license file clearly included with the source code + +- **Uniqueness**: the package shall not be a fork or minor revision of existing packages + +- **README**: the package shall have some form of README or landing-page clearly + stating the package purpose and functionality. This should also contain information on the package dependencies and the steps required to build and run. + +The following criteria are not required but are recommended: + +- **Documentation**: any form of written documentation aimed at users of the package. Ideally + this should cover: + + - Supported / tested compilers + - Dependencies + - Build and install process + - Modules contained within the package + - Procedures made available and their interfaces + - Example code + +- **Contributing**: details on how users may submit issues and contribute to the development of the + package + +- **Tests**: any form of executable test(s) that can be used to verify the functionality of the package + +- **Portability**: no non-standard language extensions or proprietary dependencies + +- **FPM**: support installation by the Fortran Package Manager [fpm](https://github.com/fortran-lang/fpm) + +## Process for adding packages + +1. Users should confirm that their project meets the minimum requirements for listing in the + Fortran-lang package index, as written in this document + +2. Users should open a pull request using the 'Package index request' template + +3. At least three Fortran-lang community members shall review the request against the criteria above + +4. If three or more Fortran-lang community members agree that the package should be listed and there is no significant objection, then the pull request will be merged + +## Package index requests + +Package index requests are made by pull requests against the [fortran-lang.org repository](https://github.com/fortran-lang/webpage/). +See [this guide](https://guides.github.com/activities/forking/) for guidance on forking and making pull requests. + +Package details are listed in the `data/package_index.yml` data file. + +To add a package simply create a new entry within this file. +The data file is ordered by high-level categories merely to aid in navigation; +find the appropriate category for your package and create a new entry. + +#### After adding a new entry to package index, run the github action fortran_packages before building the sphinx build. + +### Github hosted packages + +``` + - name: + github: / + description: + categories: [category2] + tags: [tag1] [tag2] [tag3] + version: [version] + license: [license] +``` + +Valid categories: + +- `libraries`: general libraries +- `interfaces`: libraries that provide interfaces to other libraries, software or devices +- `programming`: general programming utilities: errors, logging, testing, documentation _etc._ +- `data-types`: libraries providing advanced data types: containers, datetime, resizable arrays _etc._ +- `strings`: string handling libraries +- `io`: libraries that parse and generate various file formats +- `graphics`: plotting and GUIs +- `numerical`: matrices, linear algebra, solvers, root-finding, interpolation, optimization, differential eqns, statistics, machine learning, random numbers _etc._ +- `scientific`: domain-specific scientific libraries or applications +- `examples`: repositories offering language feature demonstrations, tutorials and benchmarks + +**Projects listing more than one category must provide good justification thereof in the pull request.** + +**Notes:** + +- The package description should clearly describe the functionality of the package in a single sentence. + +- Tags (optional) should contain any terms not already contained in the name or description that users may search directly for. Tags should be separate by spaces. + +- Package version + + - this can be determined automatically if a versioned release has been created on github + - if version is specified, it will override any detected github version + - if version is 'none', then no version information will be displayed. (Use this if + your package has no version.) + +- Package license + - this can be determined automatically if github is able to detect a known license + - license must be specified if github is unable to detect a known license + +### Non-github hosted packages + +``` + - name: + url: + description: + categories: [category2] + tags: [tag1] [tag2] [tag3] + version: [version] + license: +``` + +**Notes:** + +- License and version information cannot be detected automatically for non-github repositories +- if your package has no version, then omit the version field +- a license must be specified for non-github repositories + +### Member review checklist + +Community members reviewing packages should cover the following points: + +1. Ensure the package meets the minimum criteria as written in this document + +2. Check the package metadata + + - Repository exists and is accessible + - Description clearly and concisely describes the package + - Assigned category is appropriate + +3. Check license information + - If license field has been omitted: check that github has detected the license + - If license field is included: check that it matches repository license file + +After merge: + +- Check that package is available in expected category and search diff --git a/_sources/compilers.md.txt b/_sources/compilers.md.txt new file mode 100644 index 000000000000..19395e9bd218 --- /dev/null +++ b/_sources/compilers.md.txt @@ -0,0 +1,195 @@ +--- +sd_hide_title: true +... + +

Fortran Compilers

+

Fortran has over a dozen open source and commercial compilers.

+ +## Compilers + +

Open source compilers

+ +

GNU Fortran Compiler

+ +[GNU Fortran Compiler (gfortran)](https://gcc.gnu.org/fortran/) is a mature +free and open source compiler, part of the GNU Compiler Collection. + +[OpenCoarrays](http://www.opencoarrays.org/) is a library and compiler wrapper +around gfortran which enables the parallel programming features of Fortran 2018 +with gfortran. + +

LLVM Flang

+ +[Flang](https://github.com/llvm/llvm-project/tree/main/flang) +is a new front-end for Fortran 2018 that has been recently +added to LLVM. +It is implemented in modern C++ and uses a Fortran-oriented MLIR dialect for lowering to LLVM IR. +This project is under active development. + +

Current Flang

+ +[Flang](https://github.com/flang-compiler/flang) is an open source compiler +based on the NVIDIA/PGI commercial compiler. + +

LFortran

+ +[LFortran](https://lfortran.org) is a modern, interactive, LLVM-based Fortran +compiler. +Also available online at [dev.lfortran.org](https://dev.lfortran.org/) using a statically served, WASM based LFortran Compiler for running code in web browsers. +

Commercial compilers

+ +

Intel oneAPI

+ +[Intel oneAPI](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html) +is Intel's suite of compilers, tools, and libraries for Fortran, C, C++, and +Python. Intel oneAPI HPC Toolkit provides +[two Fortran compilers](https://software.intel.com/content/www/us/en/develop/articles/intel-oneapi-fortran-compiler-release-notes.html): + +- Intel Fortran Compiler (`ifx`), a new, LLVM-based compiler + that comes with full Fortran 2018 support. It also supports the [majority of OpenMP 5.0/5.1](https://www.intel.com/content/www/us/en/developer/articles/technical/fortran-language-and-openmp-features-in-ifx.html) including offload to Intel GPUs. + ifx can also offload `do concurrent` to Intel GPUs. +- Intel Fortran Compiler Classic (`ifort`), a mature compiler + with full Fortran 2018 support, for CPUs only. + +The current version of Intel oneAPI is available for free, and support can be purchased. +Currently the ifx compiler supports Linux and Windows platforms for x86-64 architectures. ifort supports Linux, Windows, and macOS. +Community support is available for the free version at the [Intel Developer forum](https://community.intel.com/t5/Intel-Fortran-Compiler/bd-p/fortran-compiler). +Optionally, you can purchase [Priority Support](https://www.intel.com/content/www/us/en/developer/get-help/priority-support.html) with additional benefits including access to previous versions of ifort and ifx. + +

NAG

+ +The latest [NAG Fortran Compiler](https://www.nag.com/nag-compiler) +release (7.0) has extensive support for legacy and modern Fortran features including parallel programming with coarrays, as well as additional support for programming with OpenMP. + +The Compiler also provides significant support for Fortran 2018 (atomic +operations, events and tasks, plus other smaller features), almost all of +Fortran 2008, complete coverage of Fortran 2003, and all of OpenMP 3.1. All +platforms include supporting tools for software development: source file +polishers, dependency generator for module and include files, call-graph +generator, interface builder and a precision unifier. + +

NVIDIA

+ +The [NVIDIA HPC SDK](https://developer.nvidia.com/hpc-sdk) C, C++, and Fortran compilers, former [PGI compilers](https://www.pgroup.com/products/index.htm), support GPU acceleration of HPC modeling and simulation applications with standard C++ and Fortran, OpenACC® directives, and CUDA®. GPU-accelerated math libraries maximize performance on common HPC algorithms, and optimized communications libraries enable standards-based multi-GPU and scalable systems programming. + +NVHPC compilers are available free of charge. +Currently the compiler supports Linux platforms and x86_64, ppc64le and aarch64 architectures. +Community support is available at the [HPC compiler forum](https://forums.developer.nvidia.com/c/accelerated-computing/hpc-compilers/nvc-nvc-and-nvfortran/313). + +

HPE / Cray

+ +The [Cray Compiling Environment (CCE)](https://www.cray.com/sites/default/files/SB-Cray-Programming-Environment.pdf) +is the cornerstone innovation of Cray's adaptive computing paradigm. CCE builds +on a well-developed and sophisticated Cray technology base that identifies +regions of computation that are either sequential scalar, vector parallel or +highly multithreaded. It includes optimizing compilers that automatically +exploit the scalar, vector and multithreading hardware capabilities of the Cray +system. CCE supports Fortran, C and C++. + +

IBM

+ +[IBM® XL Fortran](https://www.ibm.com/us-en/marketplace/xl-fortran-linux-compiler-power) +for Linux is an industry standards-based programming tool used to develop large +and complex applications in the Fortran programming language. It generates code +that leverages the capabilities of the latest POWER9 architecture and maximizes +your hardware utilization. IBM XL Fortran for Linux optimizes your +infrastructure on IBM Power Systems™ in support of extensive numerical, +scientific and high-performance computing. + +A community edition of the IBM XL compilers are available free of charge. +The compilers support Linux and AIX platforms and ppc64le architectures. + +

AMD

+ +The [AMD Optimizing C/C++ Compiler (AOCC)](https://developer.amd.com/amd-aocc/) +compiler system is a high performance, production quality code generation tool. +The AOCC environment provides various options to developers when building and +optimizing C, C++, and Fortran applications targeting 32-bit and 64-bit Linux® +platforms. The AOCC compiler system offers a high level of advanced +optimizations, multi-threading and processor support that includes global +optimization, vectorization, inter-procedural analyses, loop transformations, +and code generation. AMD also provides highly optimized libraries, which extract +the optimal performance from each x86 processor core when utilized. The AOCC +Compiler Suite simplifies and accelerates development and tuning for x86 +applications. + +The AOCC compilers are available free of charge and support Linux platforms with x86_64 architectures. + +

ARM

+ +[Linux user-space Fortran compiler](https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/arm-fortran-compiler). +Tailored for HPC and scientific codes, with support for popular Fortran and +OpenMP standards and tuned for leading server-class Arm-based platforms. Built +on the open source Flang front-end, and the LLVM‑based optimization and code +generation back-end. Available as part of the Arm Compiler for Linux package. + +

Absoft

+ +[Absoft compilers](https://www.absoft.com/products/) include Pro Fortran +delivering Absoft’s exclusive AP load balancing, AVX, OpenMP 3.1, +extended Fortran 95 compiler with F2003 and F2008 features, FX3 graphical debugger, +native tool suite integration, AMDAL HPC scientific and engineering library, and more. +Pro Fortran includes Fast Data Visualization, an Absoft exclusive technology for +graphical rendering and data output. + +

Oracle / Sun

+ +[Oracle C, C++, Fortran Compiler](https://www.oracle.com/application-development/technologies/developerstudio-features.html) +is highly optimized for Oracle systems, on-premise and in the cloud + +- Advanced code generation technology for the latest Oracle SPARC and x86 based systems +- Support for the latest industry standards, including C++14, C++11, C11 and OpenMP 4.0 and extensive GCC compatibility features +- Automatic code analysis during compilation and automatic stack overflow protection at application runtime + +

Lahey / Fujitsu

+ +LF Professional v7.8 combines the 32/64-bit LGF Rainier compiler with the classic +[Lahey/Fujitsu LF95](https://lahey.com/) compiler. LGF Rainier has full Fortran +95/90/77 compliance with extensive support for the Fortran 2003 and 2008 standards. +Lahey/Fujitsu LF95 offers best in class diagnostics. +Includes the automatic-parallelizing GFortran compiler, Lahey/Fujitsu Fortran 95 +compiler, Visual Studio Fortran support, Winteracter WiSK Graphics package, and more. + +

Silverfrost FTN95

+ +[Silverfrost FTN95](https://www.silverfrost.com/) is a full Fortran 95 standards +compliant compiler, capable of producing fast executables for Win32 and for +Microsoft .NET. FTN95 ships with the world's best runtime checking and a great +range of supporting software. All standard and many vendor-specific legacy +language features are supported, so that Fortran projects may be any combination +of Fortran 77, Fortran 90 and Fortran 95. +Some features of Fortran 2003 and 2008 have been [added](https://www.silverfrost.com/19/ftn95/support/ftn95_revision_history.aspx). +Silverfrost Fortran runs on Windows / x86_64. There is a free personal edition. + +

NEC

+ +[The Fortran compiler](https://www.nec.com/en/global/solutions/hpc/sx/tools.html) +conforms to the Fortran-2003 standard (ISO/IEC 1539-1:2004) and supports many +features from Fortran-2008 (ISO/IEC 1539-1:2010). + +

LCC

+ +[MCST C, C++, Fortran Compiler](http://mcst.ru/lcc) with full support of Fortran-95 +(ISO/IEC 1539:1997) and partial support of Fortran-2003 (ISO/IEC 1539:2004), +Fortran-2008 (ISO/IEC 1539:2010) and Fortran-2018 (ISO/IEC 1539:2018). Used for +russian processor architectures Elbrus (e2k) and SPARC (MCST-R), also a cross-compiler +for x86_64 architecture is available. + +

Discontinued

+ +The following is a list of Fortran compilers that seem discontinued, so we do +not list them above: + +- Apogee +- Edinburgh Portable Compilers +- Hewlett Packard +- Watcom +- PathScale +- G95 +- Open64 +- Unisys + +

Note

+ +Please let us know if there is any compiler that is not listed, or if we listed +a compiler in the Discontinued section and it is in fact actively maintained. diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 000000000000..da1fe0e557a4 --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,162 @@ +--- +sd_hide_title: true +--- + +# The Fortran Programming Language + +:::{div} sd-text-center sd-fs-3 sd-font-weight-bold sd-text-primary +Fortran
High-performance parallel programming language +::: + +:::{div} sd-text-center sd-fs-4 +{bdg-link-primary}`Get started ` +::: + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +Features +::: + +:::{div} sd-fs-5 sd-font-weight-bold +High performance +::: + +Fortran has been designed from the ground up for computationally intensive applications in science and engineering. Mature and battle-tested compilers and libraries allow you to write code that runs close to the metal, fast. + +:::{div} sd-fs-5 sd-font-weight-bold +Statically and strongly typed +::: + +Fortran is statically and strongly typed, which allows the compiler to catch many programming errors early on for you. This also allows the compiler to generate efficient binary code. + +:::{div} sd-fs-5 sd-font-weight-bold +Easy to learn and use +::: + +Fortran is a relatively small language that is surprisingly easy to learn and use. Expressing most mathematical and arithmetic operations over large arrays is as simple as writing them as equations on a whiteboard. + +:::{div} sd-fs-5 sd-font-weight-bold +Versatile +::: + +Fortran allows you to write code in a style that best fits your problem: imperative, procedural, array-oriented, object-oriented, or functional. + +:::{div} sd-fs-5 sd-font-weight-bold +Natively parallel +::: + +Fortran is a natively parallel programming language with intuitive array-like syntax to communicate data between CPUs. You can run almost the same code on a single CPU, on a shared-memory multicore system, or on a distributed-memory HPC or cloud-based system. Coarrays, teams, events, and collective subroutines allow you to express different parallel programming patterns that best fit your problem at hand. + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +FAQ +::: + +:::{div} sd-fs-5 sd-font-weight-bold +What is the status of Fortran? +::: + +Fortran is mature and under active development. +The latest revision of the language is +[Fortran 2018](https://isotc.iso.org/livelink/livelink?func=ll&objId=19441669&objAction=Open). +The next revision, +[Fortran 2023](https://wg5-fortran.org/N2151-N2200/N2194.pdf), is planned for +release in 2023. +There are over a dozen open source and proprietary +[Fortran compilers](compilers). +Further, open source projects like the +[Standard Library](https://github.com/fortran-lang/stdlib) +and the [Fortran Package Manager](https://fpm.fortran-lang.org) are +under active development. + +:::{div} sd-fs-5 sd-font-weight-bold +What is Fortran used for? +::: + +Fortran is mostly used in domains that adopted computation early--science and engineering. These include numerical weather and ocean prediction, computational fluid dynamics, applied math, statistics, and finance. Fortran is the dominant language of High Performance Computing and is used to [benchmark the fastest supercomputers in the world](https://top500.org/). + +:::{div} sd-fs-5 sd-font-weight-bold +Should I use Fortran for my new project? +::: + +If you're writing a program or a library to perform fast arithmetic computation over large numeric arrays, Fortran is the optimal tool for the job. + +
+

Join us!

+

Mailing list

+

Subscribe to our mailing list +to discuss anything Fortran related, announce Fortran projects, discuss development +of core fortran-lang.org projects (stdlib, fpm), and get +the latest news. +

+

Discourse

+

+Join the discussion about all things Fortran on the +fortran-lang discourse. +

+

Twitter

+ + +

RSS feed

+

RSS clients can follow the RSS feed.

+

Open source

+

+Contribute code, report bugs and request features at +GitHub. +

+
+ +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +Make Fortran better +::: + +:::::{grid} 2 + +::::{grid-item-card} +:columns: 6 + +:::{div} sd-fs-5 sd-font-weight-bold +Write proposals +::: + +Have an idea about how to improve the language? You can write new proposals or contribute to existing proposals to the Fortran Standard Committee on +[GitHub](https://github.com/j3-fortran/fortran_proposals). + +:::: +::::{grid-item-card} +:columns: 6 + +:::{div} sd-fs-5 sd-font-weight-bold +Develop tools +::: + +You can also help make Fortran better by contributing to its suite of tools, such as [Standard Library](https://github.com/fortran-lang/stdlib), [Package Manager](https://github.com/fortran-lang/fpm), [this website](https://github.com/fortran-lang/webpage). + +:::: +::::: + +:::::{grid} 2 +::::{grid-item-card} +:columns: 12 + +:::{div} sd-fs-5 sd-font-weight-bold +Write Fortran software +::: + +Or just write Fortran software for your research, business, or schoolwork. You can learn how to [get started here](learn). + +:::: +::::: + +:::{toctree} +:hidden: + +Play +learn +roadmap +compilers +community +packages +news +history + +::: diff --git a/_sources/learn.md.txt b/_sources/learn.md.txt new file mode 100644 index 000000000000..44faf4786cab --- /dev/null +++ b/_sources/learn.md.txt @@ -0,0 +1,187 @@ +--- +sd_hide_title: true +... + +# Learn + +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Learn Fortran +::: + +:::{div} sd-text-center sd-fs-3 +Learning resources for beginners and experts alike +::: + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +Getting Started +::: + +::::::{grid} 1 1 2 2 +:gutter: 1 + +:::::{grid-item} + +::::{grid} 1 1 1 1 +:gutter: 1 + +:::{grid-item-card} {octicon}`info;1em;sd-text-info` New to Fortran +:shadow: none + +Try the quickstart Fortran tutorial, to get an overview of the language syntax and capabilities. + +```{card} +:link-type: url +:link: quickstart/ +:class-card: sd-btn +:class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-info sd-btn-primary sd-text-light sd-btn +:shadow: none + +{octicon}``book;1em;sd-text-info`` Quickstart tutorial +``` + +::: +:::: +::::: + +:::::{grid-item} + +::::{grid} 1 1 1 1 +:gutter: 1 + +:::{grid-item-card} {octicon}`bug;1em;sd-text-info` Looking for help +:shadow: none + +Ask a question in the Fortran-lang discourse - a forum for friendly discussion of all things Fortran. + +```{card} +:link-type: url +:link: https://fortran-lang.discourse.group/ +:class-card: sd-btn +:class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-info sd-btn-primary sd-text-light sd-btn +:shadow: none + +{octicon}``check-circle;1em;sd-text-info`` Fortran-lang Discourse +``` + +::: +:::: +::::: + +:::::{grid-item} + +::::{grid} 1 1 1 1 +:gutter: 1 + +:::{grid-item-card} {octicon}`play;1em;sd-text-info` Play with Fortran +:shadow: none + +Get a taste of Fortran in an interactive playground in the browser. + +```{card} +:link-type: url +:link: https://play.fortran-lang.org/ +:class-card: sd-btn +:class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-info sd-btn-primary sd-text-light sd-btn +:shadow: none + +{octicon}``play;1em;sd-text-info`` Fortran Playground +``` + +::: +:::: +::::: +:::::: + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary + +Mini-book Tutorials +::: + +::::::{jinja} conf + +{% for category in categories %} +:::{div} sd-fs-4 sd-font-weight-bold sd-text-primary + +{{category.name}} +::: + +:::::{grid} 2 +{% for book in books %} +{% if book.category == category.name %} + +::::{grid-item-card} +:columns: 6 +:shadow: none + +:::{div} sd-fs-5 sd-font-weight-bold sd-text-primary + +{octicon}`book;1em;sd-text-info` {{book.title}} +::: +{{book.description}} +:::: +{% endif %} +{% endfor %} +::::: +{% endfor %} + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary + +Other Resources +::: + +:::{div} sd-fs-4 sd-font-weight-bold sd-text-primary + +On the web +::: + +:::{jinja} conf + +{% for link in reference_links %} + +- [{{link.name}}]({{link.url}}) {{link.description}} + +{% endfor %} +::: + +:::{div} sd-fs-4 sd-font-weight-bold sd-text-primary + +Online Courses +::: + +:::{jinja} conf + +{% for course in reference_courses %} + +- [{{course.name}}]({{course.url}}) {{course.description}} + +{% endfor %} +::: + +:::{div} sd-fs-4 sd-font-weight-bold sd-text-primary + +In print +::: + +:::{jinja} conf + +{% for book in reference_books %} + +- {{book.author}} + {{book.year}} + [{{book.title}}]({{book.url}}) + {{book.edition}} + {{book.location}}. + {{book.publisher}} + +{% endfor %} +::: + +:::{toctree} +:hidden: + +learn/os_setup/index +learn/quickstart/index +learn/building_programs/index +learn/best_practices/index +learn/intrinsics/index +::: diff --git a/_sources/learn/best_practices/allocatable_arrays.md.txt b/_sources/learn/best_practices/allocatable_arrays.md.txt new file mode 100644 index 000000000000..83cac1b76bf5 --- /dev/null +++ b/_sources/learn/best_practices/allocatable_arrays.md.txt @@ -0,0 +1,127 @@ +# Allocatable Arrays + +The `allocatable` attribute provides a safe way for memory handling. +In comparison to variables with `pointer` attribute the memory is managed +automatically and will be deallocated automatically once the variable goes +out-of-scope. Using `allocatable` variables removes the possibility to +create memory leaks in an application. + +They can be used in subroutines to create scratch or work arrays, where +automatic arrays would become too large to fit on the stack. + +```fortran +real(dp), allocatable :: temp(:) +allocate(temp(10)) +``` + +The allocation status can be checked using the `allocated` intrinsic +to avoid uninitialized access + +```fortran +subroutine show_arr(arr) + integer, allocatable, intent(in) :: arr(:) + + if (allocated(arr)) then + print *, arr + end if +end subroutine show_arr +``` + +To allocate variables inside a procedure the dummy argument has to carry +the `allocatable` attribute. Using it in combination with `intent(out)` +will deallocate previous allocations before entering the procedure: + +```fortran +subroutine foo(lam) + real(dp), allocatable, intent(out) :: lam(:) + allocate(lam(5)) +end subroutine foo +``` + +The allocated array can be used afterwards like a normal array + +```fortran +real(dp), allocatable :: lam(:) +call foo(lam) +``` + +An already allocated array cannot be allocated again without prior deallocation. +Similarly, deallocation can only be invoked for allocated arrays. To reallocate +an array use + +```fortran +if (allocated(lam)) deallocate(lam) +allocate(lam(10)) +``` + +Passing allocated arrays to procedures does not require the `allocatable` attribute +for the dummy arguments anymore. + +```fortran +subroutine show_arr(arr) + integer, intent(in) :: arr(:) + + print *, arr +end subroutine show_arr + +subroutine proc + integer :: i + integer, allocatable :: arr + + allocate(arr(5)) + + do i = 1, size(arr) + arr(i) = 2*i + 1 + end do + call show_arr(arr) +end subroutine proc +``` + +Passing an unallocated array in this context will lead to an invalid memory access. +Allocatable arrays can be passed to `optional` dummy arguments -- if they are unallocated +the argument will not be present. The `allocatable` attribute is not limited to +arrays and can also be associated with scalars, which can be useful in combination +with `optional` dummy arguments. + +Allocations can be moved between different arrays with `allocatable` attribute +using the `move_alloc` intrinsic subroutine. + +```fortran +subroutine resize(var, n) + real(wp), allocatable, intent(inout) :: var(:) + integer, intent(in), optional :: n + integer :: this_size, new_size + integer, parameter :: inital_size = 16 + + if (allocated(var)) then + this_size = size(var, 1) + call move_alloc(var, tmp) + else + this_size = initial_size + end if + + if (present(n)) then + new_size = n + else + new_size = this_size + this_size/2 + 1 + end if + + allocate(var(new_size)) + + if (allocated(tmp)) then + this_size = min(size(tmp, 1), size(var, 1)) + var(:this_size) = tmp(:this_size) + end if +end subroutine resize +``` + +Finally, allocations do not initialize the array. The content of the uninitialized +array is most likely just the bytes of whatever was previously at the respective address. +The allocation supports initialization using the source attribute: + +```fortran +real(dp), allocatable :: arr(:) +allocate(arr(10), source=0.0_dp) +``` + +The `source` keyword supports scalar and array valued variables and constants. diff --git a/_sources/learn/best_practices/arrays.md.txt b/_sources/learn/best_practices/arrays.md.txt new file mode 100644 index 000000000000..6b547769b906 --- /dev/null +++ b/_sources/learn/best_practices/arrays.md.txt @@ -0,0 +1,196 @@ +# Arrays + +Arrays are a central object in Fortran. The creation of dynamic sized arrays +is discussed in the [allocatable arrays section](./allocatable_arrays.html). + +To pass arrays to procedures four ways are available + +1. _assumed-shape_ arrays +2. _assumed-rank_ arrays +3. _explicit-shape_ arrays +4. _assumed-size_ arrays + +The preferred way to pass arrays to procedures is as _assumed-shape_ arrays + +```fortran +subroutine f(r) + real(dp), intent(out) :: r(:) + integer :: n, i + n = size(r) + do i = 1, n + r(i) = 1.0_dp / i**2 + end do +end subroutine f +``` + +Higher-dimensional arrays can be passed in a similar way. + +```fortran +subroutine g(A) + real(dp), intent(in) :: A(:, :) + ... +end subroutine g +``` + +The array is simply passed by + +```fortran +real(dp) :: r(5) +call f(r) +``` + +In this case no array copy is done, which has the advantage that the shape and size +information is automatically passed along and checked at compile and optionally at +runtime. +Similarly, array strides can be passed without requiring a copy of the array but as +_assumed-shape_ descriptor: + +```fortran +real(dp) :: r(10) +call f(r(1:10:2)) +call f(r(2:10:2)) +``` + +This should always be your default way of passing arrays in and out of subroutines. +Avoid passing arrays as whole slices, as it obfuscates the actual intent of the code: + +```fortran +real(dp) :: r(10) +call f(r(:)) +``` + +In case more general arrays should be passed to a procedure the _assumed-rank_ +functionality introduced in the Fortran 2018 standard can be used + +```fortran +subroutine h(r) + real(dp), intent(in) :: r(..) + select rank(r) + rank(1) + ! ... + rank(2) + ! ... + end select +end subroutine h +``` + +The actual rank can be queried at runtime using the `select rank` construct. +This easily allows to create more generic functions that have to deal with +different array ranks. + +_Explicit-shape_ arrays can be useful for returning data from functions. +Most of their functionality can be provided by _assumed-shape_ and _assumed-rank_ +arrays but they find frequent use for interfacing with C or in legacy Fortran +procedures, therefore they will be discussed briefly here. + +To use _explicit-shape_ arrays, the dimension has to be passed explicitly as dummy +argument like in the example below + +```fortran +subroutine f(n, r) + integer, intent(in) :: n + real(dp), intent(out) :: r(n) + integer :: i + do i = 1, n + r(i) = 1.0_dp / i**2 + end do +end subroutine +``` + +For high-dimensional arrays additional indices have to be passed. + +```fortran +subroutine g(m, n, A) + integer, intent(in) :: m, n + real(dp), intent(in) :: A(m, n) + ... +end subroutine +``` + +The routines can be invoked by + +```fortran +real(dp) :: r(5), s(3, 4) +call f(size(r), r) +call g(size(s, 1), size(s, 2), s) +``` + +Note that the shape is not checked, so the following would be legal code +that will potentially yield incorrect results: + +```fortran +real(dp) :: s(3, 4) +call g(size(s), 1, s) ! s(12, 1) in g +call g(size(s, 2), size(s, 1), s) ! s(4, 3) in g +``` + +In this case the memory layout is preserved but the shape is changed. +Also, _explicit-shape_ arrays require contiguous memory and will create temporary +arrays in case non-contiguous array strides are passed. + +To return an array from a function with _explicit-shape_ use + +```fortran +function f(n) result(r) + integer, intent(in) :: n + real(dp) :: r(n) + integer :: i + do i = 1, n + r(i) = 1.0_dp / i**2 + end do +end function +``` + +Finally, there are _assumed-size_ arrays, which provide the least compile-time and run-time +checking and can be found frequently in legacy code. They should be avoided +in favour of _assumed-shape_ or _assumed-rank_ arrays. +An _assumed-size_ array dummy argument is identified by an asterisk as the last dimension, +this disables the usage of this array with many intrinsic functions, like `size` or +`shape`. + +To check for the correct size and shape of an _assumed-shape_ array the `size` and +`shape` intrinsic functions can be used to query for those properties + +```fortran +if (size(r) /= 4) error stop "Incorrect size of 'r'" +if (any(shape(r) /= [2, 2])) error stop "Incorrect shape of 'r'" +``` + +Note that `size` returns the total size of all dimensions. To obtain the shape of +a specific dimension add it as second argument to the function. + +Arrays can be initialized by using an array constructor + +```fortran +integer :: r(5) +r = [1, 2, 3, 4, 5] +``` + +The array constructor can be annotated with the type of the constructed array + +```fortran +real(dp) :: r(5) +r = [real(dp) :: 1, 2, 3, 4, 5] +``` + +Implicit do loops can be used inside an array constructor as well + +```fortran +integer :: i +real(dp) :: r(5) +r = [(real(i**2, dp), i = 1, size(r))] +``` + +In order for the array to start with different index than 1, do: + +```fortran +subroutine print_eigenvalues(kappa_min, lam) + integer, intent(in) :: kappa_min + real(dp), intent(in) :: lam(kappa_min:) + + integer :: kappa + do kappa = kappa_min, ubound(lam, 1) + print *, kappa, lam(kappa) + end do +end subroutine print_eigenvalues +``` diff --git a/_sources/learn/best_practices/callbacks.md.txt b/_sources/learn/best_practices/callbacks.md.txt new file mode 100644 index 000000000000..d4f0dadae677 --- /dev/null +++ b/_sources/learn/best_practices/callbacks.md.txt @@ -0,0 +1,89 @@ +# Callbacks + +A callback is a function that is passed as an argument to another function. + +The preferred way of creating such a callback is to provide an _abstract interface_ +declaring the signature of the callback. This allows to use compile time checks +for the passed callback. + +```fortran +module integrals + use types, only: dp + implicit none + private + public :: simpson, integrable_function + + abstract interface + function integrable_function(x) result(func) + import :: dp + real(dp), intent(in) :: x + real(dp) :: func + end function + end interface + +contains + + function simpson(f, a, b) result(s) + real(dp), intent(in) :: a, b + procedure(integrable_function) :: f + real(dp) :: s + + s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b)) + end function simpson + +end module integrals +``` + +The function can then be used with a callback by importing the module +as shown in the following example + +```fortran +module demo_functions + use types, only: dp + implicit none + private + public :: test_integral + +contains + + subroutine test_integral(a, k) + real(dp), intent(in) :: a, k + + print *, simpson(f, 0._dp, pi) + print *, simpson(f, 0._dp, 2*pi) + contains + + function f(x) result(y) + real(dp), intent(in) :: x + real(dp) :: y + y = a*sin(k*x) + end function f + end subroutine test_integral + +end module demo_functions +``` + +Exporting the abstract interface allows you to create procedure pointers with the +correct signature and also to extend the callback further as shown here + +```fortran +module demo_integrals + use types, only: dp + use integrals, only: simpson, integrable_function + implicit none + private + public :: simpson2, integrable_function + +contains + + function simpson2(f, a, b) result(s) + real(dp), intent(in) :: a, b + procedure(integrable_function) :: f + real(dp) :: s + real(dp) :: mid + mid = (a + b)/2 + s = simpson(f, a, mid) + simpson(f, mid, b) + end function simpson2 + +end module demo_integrals +``` diff --git a/_sources/learn/best_practices/element_operations.md.txt b/_sources/learn/best_practices/element_operations.md.txt new file mode 100644 index 000000000000..c1692990c951 --- /dev/null +++ b/_sources/learn/best_practices/element_operations.md.txt @@ -0,0 +1,124 @@ +# Element-wise Operations on Arrays + +There are three approaches to perform element-wise operations on arrays when using subroutines and functions: + +- `elemental` procedures +- _explicit-shape_ arrays +- implementing the operation for vectors and write simple wrapper + subroutines (that use `reshape` internally) for each array shape + +In the first approach, one uses the `elemental` keyword to create a +function like this: + +```fortran +real(dp) elemental function nroot(n, x) result(y) + integer, intent(in) :: n + real(dp), intent(in) :: x + y = x**(1._dp / n) +end function +``` + +All arguments (in and out) must be scalars. You can then use this +function with arrays of any (compatible) shape, for example: + +```fortran +print *, nroot(2, 9._dp) +print *, nroot(2, [1._dp, 4._dp, 9._dp, 10._dp]) +print *, nroot(2, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2])) +print *, nroot([2, 3, 4, 5], [1._dp, 4._dp, 9._dp, 10._dp]) +print *, nroot([2, 3, 4, 5], 4._dp) +``` + +The output will be: + +```fortran +3.0000000000000000 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +1.0000000000000000 1.5874010519681994 1.7320508075688772 1.5848931924611136 +2.0000000000000000 1.5874010519681994 1.4142135623730951 1.3195079107728942 +``` + +In the above, typically `n` is a parameter and `x` is the array of an +arbitrary shape, but as you can see, Fortran does not care as long as +the final operation makes sense (if one argument is an array, then the +other arguments must be either arrays of the same shape or scalars). If +it does not, you will get a compiler error. + +The `elemental` keyword implies the `pure` keyword, so the procedure +must be pure. It results that `elemental procedures` can only use `pure` procedures and have no side effects. + +If the elemental procedure algorithm can be made faster using array +operations inside, or if for some reasons the arguments must be arrays of +incompatible shapes, then one should use the other two approaches. One +can make `nroot` operate on a vector and write a simple wrapper for +other array shapes, e.g.: + +```fortran +function nroot(n, x) result(y) + integer, intent(in) :: n + real(dp), intent(in) :: x(:) + real(dp) :: y(size(x)) + y = x**(1._dp / n) +end function + +function nroot_0d(n, x) result(y) + integer, intent(in) :: n + real(dp), intent(in) :: x + real(dp) :: y + real(dp) :: tmp(1) + tmp = nroot(n, [x]) + y = tmp(1) +end function + +function nroot_2d(n, x) result(y) + integer, intent(in) :: n + real(dp), intent(in) :: x(:, :) + real(dp) :: y(size(x, 1), size(x, 2)) + y = reshape(nroot(n, reshape(x, [size(x)])), [size(x, 1), size(x, 2)]) +end function +``` + +And use as follows: + +```fortran +print *, nroot_0d(2, 9._dp) +print *, nroot(2, [1._dp, 4._dp, 9._dp, 10._dp]) +print *, nroot_2d(2, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2])) +``` + +This will print: + +```fortran +3.0000000000000000 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +``` + +Or one can use _explicit-shape_ arrays as +follows: + +```fortran +function nroot(n, k, x) result(y) + integer, intent(in) :: n, k + real(dp), intent(in) :: x(k) + real(dp) :: y(k) + y = x**(1._dp / n) +end function +``` + +Use as follows: + +```fortran +print *, nroot(2, 1, [9._dp]) +print *, nroot(2, 4, [1._dp, 4._dp, 9._dp, 10._dp]) +print *, nroot(2, 4, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2])) +``` + +The output is the same as before: + +```fortran +3.0000000000000000 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +1.0000000000000000 2.0000000000000000 3.0000000000000000 3.1622776601683795 +``` diff --git a/_sources/learn/best_practices/file_io.md.txt b/_sources/learn/best_practices/file_io.md.txt new file mode 100644 index 000000000000..d399cfa8ccf9 --- /dev/null +++ b/_sources/learn/best_practices/file_io.md.txt @@ -0,0 +1,97 @@ +# File Input/Output + +In Fortran files are managed by unit identifiers. Interaction with the filesystem +mainly happens through the `open` and `inquire` built-in procedures. +Generally, the workflow is to open a file to a unit identifier, read and/or write +to it and close it again. + +```fortran +integer :: io +open(newunit=io, file="log.txt") +! ... +close(io) +``` + +By default the file will be created if it is not existing already and opened for +both reading and writing. Writing to an existing file will start in the first +record (line) and therefore overwrite the file by default. + +To create a read-only access to a file the `status` and `action` have to be +specified with + +```fortran +integer :: io +open(newunit=io, file="log.txt", status="old", action="read") +read(io, *) a, b +close(io) +``` + +In case the file is not present a runtime error will occur. To check for the existence +of a file prior to opening it the `inquire` function can be used + +```fortran +logical :: exists +inquire(file="log.txt", exist=exists) +if (exists) then + ! ... +end if +``` + +Alternatively, the `open` procedure can return an optional _iostat_ and _iomsg_: + +```fortran +integer :: io, stat +character(len=512) :: msg +open(newunit=io, file="log.txt", status="old", action="read", & + iostat=stat, iomsg=msg) +if (stat /= 0) then + print *, trim(msg) +end if +``` + +Note that _iomsg_ requires a fixed-length character variable with sufficient storage +size to hold the error message. + +Similarly, writing to a file happens by using the _status_ and _action_ keyword. +To create a new file use + +```fortran +integer :: io +open(newunit=io, file="log.txt", status="new", action="write") +write(io, *) a, b +close(io) +``` + +Alternatively, `status="replace"` can be used to overwrite an existing file. +It is highly recommended to first check for the existence of a file before deciding +on the _status_ to use. +To append to an output file the _position_ keyword can be specified explicitly with + +```fortran +integer :: io +open(newunit=io, file="log.txt", position="append", & + & status="old", action="write") +write(io, *) size(v) +write(io, *) v(:) +close(io) +``` + +To reset the position in a file the built-in procedures `rewind` and `backspace` +can be used. `rewind` will reset to the first record (line), while `backspace` will +return to the previous record (line). + +Finally, to delete a file the file has to be opened and can be deleted after closing +with + +```fortran +logical :: exists +integer :: io, stat +inquire(file="log.txt", exist=exists) +if (exists) then + open(file="log.txt", newunit=io, iostat=stat) + if (stat == 0) close(io, status="delete", iostat=stat) +end if +``` + +A useful IO feature is scratch files, which can be opened with `status="scratch"`. +They are automatically deleted after closing the unit identifier. diff --git a/_sources/learn/best_practices/floating_point.md.txt b/_sources/learn/best_practices/floating_point.md.txt new file mode 100644 index 000000000000..145567015a46 --- /dev/null +++ b/_sources/learn/best_practices/floating_point.md.txt @@ -0,0 +1,90 @@ +# Floating Point Numbers + +The default representation of floating point numbers is using single precision +(usually 32 bits / 4 bytes). For most applications a higher precision is required. +For this purpose a custom kind parameter can be defined. +The recommended way of defining kind parameters is to use + +```fortran +integer, parameter :: dp = selected_real_kind(15) +``` + +For many purposes it also suffices to directly infer the kind parameter from +a literal like here + +```fortran +integer, parameter :: dp = kind(0.0d0) +``` + +or to rename the imported kind parameter from the `iso_fortran_env` module + +```fortran +use, intrinsic :: iso_fortran_env, only : dp => real64 +``` + +For some insightful thoughts on kind parameters see +Doctor Fortran in it takes all KINDs. + +It is recommended to have a central module to define kind parameters and include +them with use as necessary. An example for such a module is given with + +```fortran +!> Numerical storage size parameters for real and integer values +module kind_parameter + implicit none + public + + !> Single precision real numbers, 6 digits, range 10⁻³⁷ to 10³⁷-1; 32 bits + integer, parameter :: sp = selected_real_kind(6, 37) + !> Double precision real numbers, 15 digits, range 10⁻³⁰⁷ to 10³⁰⁷-1; 64 bits + integer, parameter :: dp = selected_real_kind(15, 307) + !> Quadruple precision real numbers, 33 digits, range 10⁻⁴⁹³¹ to 10⁴⁹³¹-1; 128 bits + integer, parameter :: qp = selected_real_kind(33, 4931) + + !> Char length for integers, range -2⁷ to 2⁷-1; 8 bits + integer, parameter :: i1 = selected_int_kind(2) + !> Short length for integers, range -2¹⁵ to 2¹⁵-1; 16 bits + integer, parameter :: i2 = selected_int_kind(4) + !> Length of default integers, range -2³¹ to 2³¹-1; 32 bits + integer, parameter :: i4 = selected_int_kind(9) + !> Long length for integers, range -2⁶³ to 2⁶³-1; 64 bits + integer, parameter :: i8 = selected_int_kind(18) + +end module kind_parameter +``` + +Floating point constants should always be declared including a kind parameter suffix: + +```fortran +real(dp) :: a, b, c +a = 1.0_dp +b = 3.5_dp +c = 1.34e8_dp +``` + +It is safe to assign integers to floating point numbers without losing accuracy: + +```fortran +real(dp) :: a +a = 3 +``` + +In order to impose floating point division (as opposed to integer +division `3/4` equal to `0`), one can convert the integer to a floating +point number by: + +```fortran +real(dp) :: a +a = real(3, dp) / 4 ! 'a' is equal to 0.75_dp +``` + +or simply separate the integer division with multiplication by `1.0_dp` + +```fortran +real(dp) :: a +a = 3 * 1.0_dp / 4 ! 'a' is equal to 0.75_dp +``` + +To print floating point numbers without losing precision use the unlimited +format specifier `(g0)` or the exponential representation `(es24.16e3)`, +which will give you 17 significant digits of printout. diff --git a/_sources/learn/best_practices/index.md.txt b/_sources/learn/best_practices/index.md.txt new file mode 100644 index 000000000000..b84773007a2c --- /dev/null +++ b/_sources/learn/best_practices/index.md.txt @@ -0,0 +1,26 @@ +:::{sectionauthor} Ondřej Čertík, John Pask, Jed Brown, Matthew Emmett, Juan Luis Cano Rodríguez, Neil Carlson, Andrea Vigliotti, Pierre Haessig, Vincent Magnin, Sebastian Ehlert, Jeremie Vandenplas +::: + +# Fortran Best Practices + +This mini-book collects a modern canonical way of doing things in Fortran. +It serves as a style guide and best practice recommendation for popular topics +and common tasks. Generally, a canonical solution or pattern is presented and +discussed. It is meant for programmers with basic familiarity of the Fortran syntax +and programming in general. + +```{toctree} +:maxdepth: 2 +:hidden: +Fortran Style Guide +Floating Point Numbers +Integer Division +Modules and Programs +Arrays +Multidimensional Arrays +Element-wise Operations on Array +Allocatable Arrays +File Input/Output +Callbacks +Type Casting in Callbacks +``` diff --git a/_sources/learn/best_practices/integer_division.md.txt b/_sources/learn/best_practices/integer_division.md.txt new file mode 100644 index 000000000000..51fb0330a90c --- /dev/null +++ b/_sources/learn/best_practices/integer_division.md.txt @@ -0,0 +1,34 @@ +# Integer Division + +Fortran distinguishes between floating point and integer arithmetic. It is +important to note that division for integers is always using integer +arithmetic. Furthermore, while Fortran uses the standard order-of-operations +(e.g. multiplication and division preceed addition and subtraction, in the +absence of parenthesis), operations of the same precedence are evaluated from +left to right. Consider the following example for integer division of an odd +number: + +```fortran +integer :: n +n = 3 +print *, n / 2 ! prints 1 +print *, n*(n + 1)/2 ! prints 6 +print *, n/2*(n + 1) ! prints 4 (left-to-right evaluation order) +n = -3 +print *, n / 2 ! prints -1 +``` + +Be careful about whether you want to actually use integer arithmetic +in this context. If you want to use floating point arithmetic instead +make sure to cast to reals before using the division operator, or separate +the integers by multiplying by `1.0_dp`: + +```fortran +integer :: n +n = 3 +print *, real(n, dp) / 2 ! prints 1.5 +print *, n * 1.0_dp / 2 ! prints 1.5 +n = -3 +print *, real(n, dp) / 2 ! prints -1.5 +print *, n * 1.0_dp / 2 ! prints -1.5 +``` diff --git a/_sources/learn/best_practices/modules_programs.md.txt b/_sources/learn/best_practices/modules_programs.md.txt new file mode 100644 index 000000000000..565883bd220a --- /dev/null +++ b/_sources/learn/best_practices/modules_programs.md.txt @@ -0,0 +1,144 @@ +# Modules and Programs + +Modules are the preferred way create modern Fortran libraries and applications. +As a convention, one source file should always contain only one module, while +the module name should match the filepath to allow easy navigation in larger +projects. It is also recommended to prefix module names with the library name +to avoid name clashes when used as dependency in other projects. + +An example for such a module file is given here + +```fortran +!> Interface to TOML processing library. +!> +!> ... +module fpm_toml + use fpm_error, only : error_t, fatal_error, file_not_found_error + use fpm_strings, only : string_t + use tomlf, only : toml_table, toml_array, toml_key, toml_stat, get_value, & + & set_value, toml_parse, toml_error, new_table, add_table, add_array, & + & toml_serializer, len + implicit none + private + + public :: read_package_file + public :: toml_table, toml_array, toml_key, toml_stat, get_value, set_value + public :: new_table, add_table, add_array, len + public :: toml_error, toml_serializer, toml_parse + +contains + + !> Process the configuration file to a TOML data structure + subroutine read_package_file(table, manifest, error) + !> TOML data structure + type(toml_table), allocatable, intent(out) :: table + !> Name of the package configuration file + character(len=*), intent(in) :: manifest + !> Error status of the operation + type(error_t), allocatable, intent(out) :: error + ! ... + end subroutine read_package_file + +end module fpm_toml +``` + +There are a few things in this example module to highlight. First, every module +starts with comments documenting the purpose and content of the module. +Similarly, every procedure starts with a comment briefly describing its +purpose and the intent of the dummy arguments. Documentation is one of the most +important parts of creating long-living software, regardless of language. + +Second, imports (_use_) and exports (_public_) are explicitly given, this +allows on a glance at the module source to check the used and available +procedures, constants and derived types. The imports are usually limited +to the module scope rather than reimported in every procedure or interface +scope. Similarly, exports are made explicitly by adding a _private_ statement +on a single line and explicitly listing all exported symbols in _public_ +statements. + +Finally, the `implicit none` statement works for the whole module and there +is no need to repeat it within each procedure. + +Variables inside a module are static (_implicitly saved_). It is highly +recommended to limit the usage of module variables to constant expressions, +like parameters or enumerators only or export them as _protected_ rather +than _public_. + +Submodules can be used to break long dependency chains and shorten recompilation +cascades in Fortran programs. They also offer the possibility to provide specialized +and optimized implementations without requiring the use of preprocessor. + +An example from the Fortran standard library is the quadrature module, which +only defines interfaces to module procedures, but no implementations + +```fortran +!> Numerical integration +!> +!> ... +module stdlib_quadrature + use stdlib_kinds, only: sp, dp, qp + implicit none + private + + public :: trapz + ! ... + + !> Integrates sampled values using trapezoidal rule + interface trapz + pure module function trapz_dx_dp(y, dx) result(integral) + real(dp), intent(in) :: y(:) + real(dp), intent(in) :: dx + real(dp) :: integral + end function trapz_dx_dp + module function trapz_x_dp(y, x) result(integral) + real(dp), intent(in) :: y(:) + real(dp), intent(in) :: x(:) + real(dp) :: integral + end function trapz_x_dp + end interface trapz + + ! ... +end module stdlib_quadrature +``` + +While the implementation is provided in separate submodules like the one for the +trapezoidal integration rule given here. + +```fortran +!> Actual implementation of the trapezoidal integration rule +!> +!> ... +submodule (stdlib_quadrature) stdlib_quadrature_trapz + use stdlib_error, only: check + implicit none + +contains + + pure module function trapz_dx_dp(y, dx) result(integral) + real(dp), intent(in) :: y(:) + real(dp), intent(in) :: dx + real(dp) :: integral + integer :: n + + n = size(y) + select case (n) + case (0:1) + integral = 0.0_dp + case (2) + integral = 0.5_dp*dx*(y(1) + y(2)) + case default + integral = dx*(sum(y(2:n-1)) + 0.5_dp*(y(1) + y(n))) + end select + end function trapz_dx_dp + + ! ... +end submodule stdlib_quadrature_trapz +``` + +Note that the module procedures do not have to be implemented in the same submodule. +Several submodules can be used to reduce the compilation load for huge modules. + +Finally, when setting up a program, it is recommended to keep the actual implementations +in the program body at minimum. Reusing implementations from modules allows you to write +reusable code and focus the program unit on conveying user input to the respective library +functions and objects. diff --git a/_sources/learn/best_practices/multidim_arrays.md.txt b/_sources/learn/best_practices/multidim_arrays.md.txt new file mode 100644 index 000000000000..70d36b2aa676 --- /dev/null +++ b/_sources/learn/best_practices/multidim_arrays.md.txt @@ -0,0 +1,66 @@ +# Multidimensional Arrays + +Multidimensional arrays are stored in column-major order. This means the +left-most (inner-most) index addresses elements contiguously. +From a practical point this means that the array slice `V(:, 1)` is +contiguous, while the stride between elements in the slice `V(1, :)` +is the dimension of the columns. This is important when passing array +slices to procedures which expect to work on contiguous data. + +The locality of the memory is important to consider depending on +your application, usually when performing operations on a multidimensional +the sequential access should always advance in unity strides. + +In the following example the inverse distance between two sets of points +is evaluated. Note that the points are stored contiguously in the arrays +`xyz1`/`xyz2`, while the inner-most loop is advancing the left-most +index of the matrix `a`. + +```fortran +subroutine coulomb_matrix(xyz1, xyz2, a) + real(dp), intent(in) :: xyz1(:, :) + real(dp), intent(in) :: xyz2(:, :) + real(dp), intent(out) :: a(:, :) + integer :: i, j + do i = 1, size(a, 2) + do j = 1, size(a, 1) + a(j, i) = 1.0_dp/norm2(xyz1(:, j) - xyz2(:, i)) + end do + end do +end subroutine coulomb_matrix +``` + +Another example would be the contraction of the third dimension of a rank +three array: + +```fortran +do i = 1, size(amat, 3) + do j = 1, size(amat, 2) + do k = 1, size(amat, 1) + cmat(k, j) = cmat(k, j) + amat(k, j, i) * bvec(i) + end do + end do +end do +``` + +Contiguous array slices can be used in array-bound remapping to allow usage +of higher rank arrays as lower rank arrays without requiring to reshape +and potentially create a temporary copy of the array. + +For example this can be used to contract the third dimension of a rank +three array using a matrix-vector operation: + +```fortran +subroutine matmul312(amat, bvec, cmat) + real(dp), contiguous, intent(in), target :: amat(:, :, :) + real(dp), intent(in) :: bvec(:) + real(dp), contiguous, intent(out), target :: cmat(:, :) + real(dp), pointer :: aptr(:, :) + real(dp), pointer :: cptr(:) + + aptr(1:size(amat, 1)*size(amat, 2), 1:size(amat, 3)) => amat + cptr(1:size(cmat)) => cmat + + cptr = matmul(aptr, bvec) +end subroutine matmul312 +``` diff --git a/_sources/learn/best_practices/style_guide.md.txt b/_sources/learn/best_practices/style_guide.md.txt new file mode 100644 index 000000000000..7539c822c6d7 --- /dev/null +++ b/_sources/learn/best_practices/style_guide.md.txt @@ -0,0 +1,51 @@ +# Fortran Style Guide + +## Naming Convention + +Ultimately this is a matter of preference. Here is a style guide that we +like and that seems to be prevalent in most scientific codes (as well as +the Fortran standard library), and you are welcome to follow it. + +1. Use lowercase for all Fortran constructs (`do`, `subroutine`, + `module`, ...). +2. Follow short mathematical notation for mathematical + variables/functions (`Ylm`, `Gamma`, `gamma`, `Enl`, `Rnl`, ...). +3. For other names use all lowercase: try to keep names to one or two + syllables; if more are required, use underscores to clarify + (`sortpair`, `whitechar`, `meshexp`, `numstrings`, `linspace`, + `meshgrid`, `argsort`, `spline`, `spline_interp`, + `spline_interpolate`, `stoperr`, `stop_error`, `meshexp_der`). + +For example "spline interpolation" can be shortened to +`spline_interpolation`, `spline_interpolate`, `spline_interp`, `spline`, +but not to `splineint` ("int" could mean integration, integer, etc. --- +too much ambiguity, even in the clear context of a computational code). +This is in contrast to `get_argument()` where `getarg()` is perfectly +clean and clear. + +The above are general guidelines. In general, choosing the right name +certainly depends on the word being truncated as to whether the first +syllable is sufficient. Usually it is but clearly not always. Thus some +thought should go into step "try to keep names to 2 syllables or less" +since it can really affect the indicativeness and simplicity. Simple +consistent naming rules are a real help in this regard -- for both +collaboration and for one's own sanity when going back to some old code +you haven't seen in while. + +## Indentation + +Use a consistent indentation to make your code readable. +The amount of indentation is a matter of preference, the most common choices +are two, three or four spaces. + +## Comparison to Other Languages + +On the other hand, in most of the rest of the programming world, where +the main focus is, in one form or another, on defining and using large +sets of complex objects, with tons of properties and behaviors, known +only in the code in which they are defined (as opposed to defined by the +same notation throughout the literature), it makes more sense to use +longer, more descriptive names. The naming conventions one sees used in +more general-purpose languages such as C++ and Python, therefore, are +perfectly consistent with their more general-purpose missions. But +Fortran has a different mission (numerical scientific computing). diff --git a/_sources/learn/best_practices/type_casting.md.txt b/_sources/learn/best_practices/type_casting.md.txt new file mode 100644 index 000000000000..fdcbd9c8bb69 --- /dev/null +++ b/_sources/learn/best_practices/type_casting.md.txt @@ -0,0 +1,482 @@ +# Type Casting in Callbacks + +There are essentially five different ways to do type casting, each with its own +advantages and disadvantages. + +The methods I, II and V can be used both in C and Fortran. The methods +III and IV are only available in Fortran. The method VI is obsolete and +should not be used. + +## Work Arrays + +Pass a "work array" which is packed with everything needed by +the caller and unpacked by the called routine. This is the old way -- +e.g., how LAPACK does it. + +Integrator: + +```fortran +module integrals + use types, only: dp + implicit none + private + public simpson + +contains + +real(dp) function simpson(f, a, b, data) result(s) + real(dp), intent(in) :: a, b + interface + real(dp) function func(x, data) + use types, only: dp + implicit none + real(dp), intent(in) :: x + real(dp), intent(inout) :: data(:) + end function + end interface + procedure(func) :: f + real(dp), intent(inout) :: data(:) + s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data)) +end function + +end module +``` + +Usage: + +```fortran +module test + use types, only: dp + use integrals, only: simpson + implicit none + private + public foo + +contains + +real(dp) function f(x, data) result(y) + real(dp), intent(in) :: x + real(dp), intent(inout) :: data(:) + real(dp) :: a, k + a = data(1) + k = data(2) + y = a*sin(k*x) +end function + +subroutine foo(a, k) + real(dp) :: a, k + real(dp) :: data(2) + data(1) = a + data(2) = k + print *, simpson(f, 0._dp, pi, data) + print *, simpson(f, 0._dp, 2*pi, data) +end subroutine + +end module +``` + +## General Structure + +Define a general structure which encompass the variations you +actually need (or are even remotely likely to need going forward). This +single structure type can then change if needed as future +needs/ideas permit but won't likely need to change from passing, say, +real numbers to, say, and instantiation of a text editor. + +Integrator: + +```fortran +module integrals + use types, only: dp + implicit none + private + public simpson, context + + type context + ! This would be adjusted according to the problem to be solved. + ! For example: + real(dp) :: a, b, c, d + integer :: i, j, k, l + real(dp), pointer :: x(:), y(:) + integer, pointer :: z(:) + end type + +contains + +real(dp) function simpson(f, a, b, data) result(s) + real(dp), intent(in) :: a, b + interface + real(dp) function func(x, data) + use types, only: dp + implicit none + real(dp), intent(in) :: x + type(context), intent(inout) :: data + end function + end interface + procedure(func) :: f + type(context), intent(inout) :: data + s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data)) +end function + +end module +``` + +Usage: + +```fortran +module test + use types, only: dp + use integrals, only: simpson, context + implicit none + private + public foo + +contains + +real(dp) function f(x, data) result(y) + real(dp), intent(in) :: x + type(context), intent(inout) :: data + real(dp) :: a, k + a = data%a + k = data%b + y = a*sin(k*x) +end function + +subroutine foo(a, k) + real(dp) :: a, k + type(context) :: data + data%a = a + data%b = k + print *, simpson(f, 0._dp, pi, data) + print *, simpson(f, 0._dp, 2*pi, data) +end subroutine + +end module +``` + +There is only so much flexibility really needed. For example, you could +define two structure types for this purpose, one for Schroedinger and +one for Dirac. Each would then be sufficiently general and contain all +the needed pieces with all the right labels. + +Point is: it needn't be "one abstract type to encompass all" or bust. +There are natural and viable options between "all" and "none". + +## Private Module Variables + +Hide the variable arguments completely by passing in module variables. + +Integrator: + +```fortran +module integrals + use types, only: dp + implicit none + private + public simpson + +contains + +real(dp) function simpson(f, a, b) result(s) + real(dp), intent(in) :: a, b + interface + real(dp) function func(x) + use types, only: dp + implicit none + real(dp), intent(in) :: x + end function + end interface + procedure(func) :: f + s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b)) +end function + +end module +``` + +Usage: + +```fortran +module test + use types, only: dp + use integrals, only: simpson + implicit none + private + public foo + + real(dp) :: global_a, global_k + +contains + +real(dp) function f(x) result(y) + real(dp), intent(in) :: x + y = global_a*sin(global_k*x) +end function + +subroutine foo(a, k) + real(dp) :: a, k + global_a = a + global_k = k + print *, simpson(f, 0._dp, pi) + print *, simpson(f, 0._dp, 2*pi) +end subroutine + +end module +``` + +However it is best to avoid such global variables -- even though really +just semi-global -- if possible. But sometimes it may be the simplest +cleanest way. However, with a bit of thought, usually there is a better, +safer, more explicit way along the lines of II or IV. + +## Nested functions + +Integrator: + +```fortran +module integrals + use types, only: dp + implicit none + private + public simpson + +contains + +real(dp) function simpson(f, a, b) result(s) + real(dp), intent(in) :: a, b + interface + real(dp) function func(x) + use types, only: dp + implicit none + real(dp), intent(in) :: x + end function + end interface + procedure(func) :: f + s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b)) +end function + +end module +``` + +Usage: + +```fortran +subroutine foo(a, k) +use integrals, only: simpson +real(dp) :: a, k +print *, simpson(f, 0._dp, pi) +print *, simpson(f, 0._dp, 2*pi) + +contains + +real(dp) function f(x) result(y) +real(dp), intent(in) :: x +y = a*sin(k*x) +end function f + +end subroutine foo +``` + +## Using type(c_ptr) Pointer + +In C, one would use the `void *` pointer. In Fortran, one can use +`type(c_ptr)` for exactly the same purpose. + +Integrator: + +```fortran +module integrals + use types, only: dp + use iso_c_binding, only: c_ptr + implicit none + private + public simpson + +contains + +real(dp) function simpson(f, a, b, data) result(s) + real(dp), intent(in) :: a, b + interface + real(dp) function func(x, data) + use types, only: dp + implicit none + real(dp), intent(in) :: x + type(c_ptr), intent(in) :: data + end function + end interface + procedure(func) :: f + type(c_ptr), intent(in) :: data + s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data)) +end function + +end module +``` + +Usage: + +```fortran +module test + use types, only: dp + use integrals, only: simpson + use iso_c_binding, only: c_ptr, c_loc, c_f_pointer + implicit none + private + public foo + + type f_data + ! Only contains data that we need for our particular callback. + real(dp) :: a, k + end type + +contains + +real(dp) function f(x, data) result(y) + real(dp), intent(in) :: x + type(c_ptr), intent(in) :: data + type(f_data), pointer :: d + call c_f_pointer(data, d) + y = d%a * sin(d%k * x) +end function + +subroutine foo(a, k) + real(dp) :: a, k + type(f_data), target :: data + data%a = a + data%k = k + print *, simpson(f, 0._dp, pi, c_loc(data)) + print *, simpson(f, 0._dp, 2*pi, c_loc(data)) +end subroutine + +end module +``` + +As always, with the advantages of such re-casting, as Fortran lets you +do if you really want to, come also the disadvantages that fewer +compile- and run-time checks are possible to catch errors; and with +that, inevitably more leaky, bug-prone code. So one always has to +balance the costs and benefits. + +Usually, in the context of scientific programming, where the main thrust +is to represent and solve precise mathematical formulations (as opposed +to create a GUI with some untold number of buttons, drop-downs, and +other interface elements), simplest, least bug-prone, and fastest is to +use one of the previous approaches. + +## transfer() Intrinsic Function + +Before Fortran 2003, the only way to do type casting was using the +`transfer` intrinsic function. It is functionally equivalent to the +method V, but more verbose and more error prone. It is now obsolete and +one should use the method V instead. + +Examples: + + + + + + + +## Object Oriented Approach + +The module: + +```fortran +module integrals + + use types, only: dp + implicit none + private + + public :: integrand, simpson + + ! User extends this type + type, abstract :: integrand + contains + procedure(func), deferred :: eval + end type + + abstract interface + function func(this, x) result(fx) + import :: integrand, dp + class(integrand) :: this + real(dp), intent(in) :: x + real(dp) :: fx + end function + end interface + +contains + +real(dp) function simpson(f, a, b) result(s) + class(integrand) :: f + real(dp), intent(in) :: a, b + s = ((b-a)/6) * (f%eval(a) + 4*f%eval((a+b)/2) + f%eval(b)) +end function + +end module +``` + +The abstract type prescribes exactly what the integration routine needs, +namely a method to evaluate the function, but imposes nothing else on +the user. The user extends this type, providing a concrete +implementation of the eval type bound procedure and adding necessary +context data as components of the extended type. + +Usage: + +```fortran +module example_usage + + use types, only: dp + use integrals, only: integrand, simpson + implicit none + private + + public :: foo + + type, extends(integrand) :: my_integrand + real(dp) :: a, k + contains + procedure :: eval => f + end type + +contains + +function f(this, x) result(fx) + class(my_integrand) :: this + real(dp), intent(in) :: x + real(dp) :: fx + fx = this%a*sin(this%k*x) +end function + +subroutine foo(a, k) + real(dp) :: a, k + type(my_integrand) :: my_f + my_f%a = a + my_f%k = k + print *, simpson(my_f, 0.0_dp, 1.0_dp) + print *, simpson(my_f, 0.0_dp, 2.0_dp) +end subroutine + +end module +``` + +## Complete Example of void \* vs type(c_ptr) and transfer() + +Here are three equivalent codes: one in C using `void *` and two codes +in Fortran using `type(c_ptr)` and `transfer()`: + +| Language   | Method | Link | +| --------------- | -------------------- | --------------------------------- | +| C | `void *` | | +| Fortran | `type(c_ptr)`   | | +| Fortran | `transfer()` | | + +The C code uses the standard C approach for writing extensible libraries +that accept callbacks and contexts. The two Fortran codes show how to do +the same. The `type(c_ptr)` method is equivalent to the C version and +that is the approach that should be used. + +The `transfer()` method is here for completeness only (before Fortran +2003, it was the only way) and it is a little cumbersome, because the +user needs to create auxiliary conversion functions for each of his +types. As such, the `type(c_ptr)` method should be used instead. diff --git a/_sources/learn/building_programs/build_tools.md.txt b/_sources/learn/building_programs/build_tools.md.txt new file mode 100644 index 000000000000..c867ae55ab24 --- /dev/null +++ b/_sources/learn/building_programs/build_tools.md.txt @@ -0,0 +1,542 @@ +# Build tools + +Compiling your Fortran projects by hand can become quite complicated depending +on the number of source files and the interdependencies through the module. +Supporting different compilers and linkers or different platforms can become +increasingly complicated unless the right tools are used to automatically +perform those tasks. + +Depending on the size of your project and the purpose of project different +options for the build automation can be used. + +First, your integrated development environment probably provides a way to build +your program. A popular cross-platform tool is Microsoft's +Visual Studio Code, +but others exist, such as +Atom, +Eclipse Photran, +and Code::Blocks. +They offer a graphical user-interface, but are often very specific for the +compiler and platform. + +For smaller projects, the rule based build system `make` is a common +choice. Based on the rules defined it can perform task like (re)compiling +object files from updated source files, creating libraries and linking +executables. +To use `make` for your project you have to encode those rules in `Makefile`, +which defines the interdependencies of all the final program, the intermediary +object files or libraries and the actual source files. +For a short introduction see [the guide on `make`](#using-make-as-build-tool). + +Maintenance tools like autotools and CMake can generate Makefiles or +Visual Studio project files via a high-level description. They abstract +away from the compiler and platform specifics. + +Which of those tools are the best choice for your projects depends on many factors. +Choose a build tool you are comfortable working with, it should not get in your +way while developing. Spending more time on working against your build tools +than doing actual development work can quickly become frustrating. + +Also, consider the accessibility of your build tools. +If it is restricted to a specific integrated development environment, can all +developers on your project access it? +If you are using a specific build system, does it work on all platforms you +are developing for? +How large is the entry barrier of your build tools? Consider the learning curve +for the build tools, the perfect build tool will be of no use, if you have to +learn a complex programming language first to add a new source file. +Finally, consider what other project are using, those you are depending on and +those that use (or will use) your project as dependency. + +## Using make as build tool + +The most well-known and commonly used build system is called `make`. +It performs actions following rules defined in a configuration file +called `Makefile` or `makefile`, which usually leads to compiling a program +from the provided source code. + +::::{tip} +For an in-depth `make` tutorial lookup its info page. There is an online version of this info page, available. +:::: + +We will start with the basics from your clean source directory. Create and open +the file `Makefile`, we start with a simple rule called _all_: + +```make +all: + echo "$@" +``` + +After saving the `Makefile` run it by executing `make` in the same directory. +You should see the following output: + + echo "all" + all + +First, we note that `make` is substituting `$@` for the name of the rule, +the second thing to note is that `make` is always printing the command it is +running, finally, we see the result of running `echo "all"`. + +::::{note} +We call the entry point of our `Makefile` always _all_ by convention, but you can choose whatever name you like. +:::: + +::::{note} +You should not have noticed it if your editor is working correctly, +but you have to indent the content of a rule with a tab character. +In case you have problems running the above `Makefile` and see an error like + + Makefile:2: *** missing separator. Stop. + +The indentation is probably not correct. In this case replace the indentation +in the second line with a tab character. + +:::: + +Now we want to make our rules more complicated, therefore we add another rule: + +```make +PROG := my_prog + +all: $(PROG) + echo "$@ depends on $^" + +$(PROG): + echo "$@" +``` + +Note how we declare variables in `make`, you should always declare your local +variables with `:=`. To access the content of a variable we use the `$(...)`, +note that we have to enclose the variable name in parenthesis. + +::::{note} +The declaration of variables is usually done with `:=`, but `make` does +support _recursively expanded_ variables as well with `=`. +Normally, the first kind of declaration is wanted, as they are more predictable +and do not have a runtime overhead from the recursive expansion. +:::: + +We introduced a dependency of the rule all, namely the content of the variable +`PROG`, also we modified the printout, we want to see all the dependencies +of this rule, which are stored in the variable `$^`. +Now for the new rule which we name after the value of the variable `PROG`, +it does the same thing we did before for the rule _all_, note how the value +of `$@` is dependent on the rule it is used in. + +Again check by running the `make`, you should see: + + echo "my_prog" + my_prog + echo "all depends on my_prog" + all depends on my_prog + +The dependency has been correctly resolved and evaluated before performing +any action on the rule _all_. +Let's run only the second rule: type `make my_prog` and you will only find +the first two lines in your terminal. + +The next step is to perform some real actions with `make`, we take +the source code from the previous chapter here and add new rules to our +`Makefile`: + +```make +OBJS := tabulate.o functions.o +PROG := my_prog + +all: $(PROG) + +$(PROG): $(OBJS) + gfortran -o $@ $^ + +$(OBJS): %.o: %.f90 + gfortran -c -o $@ $< +``` + +We define `OBJS` which stands for object files, our program depends on +those `OBJS` and for each object file we create a rule to make them from +a source file. +The last rule we introduced is a pattern matching rule, `%` is the common +pattern between `tabulate.o` and `tabulate.f90`, which connects our object file +`tabulate.o` to the source file `tabulate.f90`. +With this set, we run our compiler, here `gfortran` and translate the source +file into an object file, we do not create an executable yet due to the `-c` +flag. +Note the usage of the `$<` for the first element of the dependencies here. + +After compiling all the object files we attempt to link the program, we do not +use a linker directly, but `gfortran` to produce the executable. + +Now we run the build script with `make`: + + gfortran -c -o tabulate.o tabulate.f90 + tabulate.f90:2:7: + + 2 | use user_functions + | 1 + Fatal Error: Cannot open module file ‘user_functions.mod’ for reading at (1): No such file or directory + compilation terminated. + make: *** [Makefile:10: tabulate.f90.o] Error 1 + +We remember that we have dependencies between our source files, therefore we add +this dependency explicitly to the `Makefile` with + +```make +tabulate.o: functions.o +``` + +Now we can retry and find that the build is working correctly. The output should +look like + + gfortran -c -o functions.o functions.f90 + gfortran -c -o tabulate.o tabulate.f90 + gfortran -o my_prog tabulate.o functions.o + +You should find _four_ new files in the directory now. +Run `my_prog` to make sure everything works as expected. +Let's run `make` again: + + make: Nothing to be done for 'all'. + +Using the timestamps of the executable `make` was able to determine, it is +newer than both `tabulate.o` and `functions.o`, which in turn are newer than +`tabulate.f90` and `functions.f90`. +Therefore, the program is already up-to-date with the latest code and no +action has to be performed. + +In the end, we will have a look at a complete `Makefile`. + +```make +# Disable all of make's built-in rules (similar to Fortran's implicit none) +MAKEFLAGS += --no-builtin-rules --no-builtin-variables +# configuration +FC := gfortran +LD := $(FC) +RM := rm -f +# list of all source files +SRCS := tabulate.f90 functions.f90 +PROG := my_prog + +OBJS := $(addsuffix .o, $(SRCS)) + +.PHONY: all clean +all: $(PROG) + +$(PROG): $(OBJS) + $(LD) -o $@ $^ + +$(OBJS): %.o: % + $(FC) -c -o $@ $< + +# define dependencies between object files +tabulate.f90.o: functions.f90.o user_functions.mod + +# rebuild all object files in case this Makefile changes +$(OBJS): $(MAKEFILE_LIST) + +clean: + $(RM) $(filter %.o, $(OBJS)) $(wildcard *.mod) $(PROG) +``` + +Since you are starting with `make` we highly recommend to always include +the first line, like with Fortran's `implicit none` we do not want to have +implicit rules messing up our `Makefile` in surprising and harmful ways. + +Next, we have a configuration section where we define variables, in case you +want to switch out your compiler, it can be easily done here. +We also introduced the `SRCS` variable to hold all source files, which is +more intuitive than specifying object files. +We can easily create the object files by appending a `.o` suffix using the +functions `addsuffix`. +The `.PHONY` is a special rule, which should be used for all entry points +of your `Makefile`, here we define two entry point, we already know _all_, +the new _clean_ rule deletes all the build artifacts again such that we indeed +start with a clean directory. + +Also, we slightly changed the build rule for the object files to account for +appending the `.o` suffix instead of substituting it. +Notice that we still need to explicitly define the interdependencies in the +`Makefile`. We also added a dependency for the object files on the `Makefile` +itself, in case you change the compiler, this will allow you to safely rebuild. + +Now you know enough about `make` to use it for building small projects. +If you plan to use `make` more extensively, we have compiled a few tips +for you as well. + +::::{tip} +In this guide, we avoided and disabled a lot of the commonly used `make` +features that can be particularly troublesome if not used correctly, we highly +recommend staying away from the builtin rules and variables if you do not feel +confident working with `make`, but explicitly declare all variables and rules. + +You will find that `make` is capable tool to automate short interdependent +workflows and to build small projects. But for larger projects, you will +probably soon run against some of it limitations. Usually, `make` is therefore +not used alone but combined with other tools to generate the `Makefile` +completely or in parts. +:::: + +### Recursively expanded variables + +Commonly seen in many projects are recursively expanded variables (declared with +`=` instead of `:=`). Recursive expansion of your variables allows out-of-order +declaration and other neat tricks with `make`, since they are defined as rules, +which are expanded at runtime, rather than being defined while parsing. + +For example, declaring and using your Fortran flags with this snippet will work +completely fine: + +```make +all: + echo $(FFLAGS) + +FFLAGS = $(include_dirs) -O +include_dirs += -I./include +include_dirs += -I/opt/some_dep/include +``` + +You should find the expected (or maybe unexpected) printout after running `make` + + echo -I./include -I/opt/some_dep/include -O + -I./include -I/opt/some_dep/include -O + +::::{tip} +appending with `+=` to an undefined variable will produce a recursively expanded variable with this state being inherited for all further appending. +:::: + +While, it seems like an interesting feature to use, it tends to lead to +surprising and unexpected outcomes. Usually, when defining variables like your +compiler, there is little reason to actually use the recursive expansion at all. + +The same can easily be achieved using the `:=` declaration: + +```make +all: + echo $(FFLAGS) + +include_dirs := -I./include +include_dirs += -I/opt/some_dep/include +FFLAGS := $(include_dirs) -O +``` + +::::{important} +always think of a `Makefile` as a whole set of rules, it must be parsed completely before any rule can be evaluated. +:::: + +You can use whatever kind of variables you like most, mixing them should be done +carefully, of course. It is important to be aware of the differences between the +two kinds and the respective implications. + +### Comments and whitespace + +There are some caveats with whitespace and comments, which might pop up from +time to time when using `make`. First, `make` does not know of any data +type except for strings and the default separator is just a space. +This means `make` will give a hard time trying to build a project which +has spaces in file names. If you encounter such case, renaming the file +is possibly the easiest solution at hand. + +Another common problem is leading and trailing whitespace, once introduced, +`make` will happily carry it along and it does in fact make a difference +when comparing strings in `make`. + +Those can be introduced by comments like + +```make +prefix := /usr # path to install location +install: + echo "$(prefix)/lib" +``` + +While the comment will be correctly removed by `make`, the trailing two spaces +are now part of the variable content. Run `make` and check that this is indeed +the case: + +``` +echo "/usr /lib" +/usr /lib +``` + +To solve this issue, you can either move the comment, or strip the whitespace with +the `strip` function instead. Alternatively, you could try to `join` the +strings. + +```make +prefix := /usr # path to install location +install: + echo "$(strip $(prefix))/lib" + echo "$(join $(join $(prefix), /), lib)" +``` + +All in all, none of this solutions will make your `Makefile` more readable, +therefore, it is prudent to pay extra attention to whitespace and comments when +writing and using `make`. + +## The meson build system + +After you have learned the basics of `make`, which we call a low-level build +system, we will introduce `meson`, a high-level build system. +While you specify in a low-level build system how to build your program, +you can use a high-level build system to specify what to build. +A high-level build system will deal for you with how and generate +build files for a low-level build system. + +There are plenty of high-level build systems available, but we will focus on +`meson` because it is constructed to be particularly user friendly. +The default low-level build-system of `meson` is called `ninja`. + +Let's have a look at a complete `meson.build` file: + + + +```python +project('my_proj', 'fortran', meson_version: '>=0.49') +executable('my_prog', files('tabulate.f90', 'functions.f90')) +``` + +And we are already done, the next step is to configure our low-level build system +with `meson setup build`, you should see output somewhat similar to this + + The Meson build system + Version: 0.53.2 + Source dir: /home/awvwgk/Examples + Build dir: /home/awvwgk/Examples/build + Build type: native build + Project name: my_proj + Project version: undefined + Fortran compiler for the host machine: gfortran (gcc 9.2.1 "GNU Fortran (Arch Linux 9.2.1+20200130-2) 9.2.1 20200130") + Fortran linker for the host machine: gfortran ld.bfd 2.34 + Host machine cpu family: x86_64 + Host machine cpu: x86_64 + Build targets in project: 1 + + Found ninja-1.10.0 at /usr/bin/ninja + +The provided information at this point is already more detailed than anything +we could have provided in a `Makefile`, let's run the build with +`ninja -C build`, which should show something like + + [1/4] Compiling Fortran object 'my_prog@exe/functions.f90.o'. + [2/4] Dep hack + [3/4] Compiling Fortran object 'my_prog@exe/tabulate.f90.o'. + [4/4] Linking target my_prog. + +Find and test your program at `build/my_prog` to ensure it works correctly. +We note the steps `ninja` performed are the same we would have coded up in a +`Makefile` (including the dependency), yet we did not have to specify them, +have a look at your `meson.build` file again: + +```python +project('my_proj', 'fortran', meson_version: '>=0.49') +executable('my_prog', files('tabulate.f90', 'functions.f90')) +``` + +We only specified that we have a Fortran project (which happens to require +a certain version of `meson` for the Fortran support) and told `meson` +to build an executable `my_prog` from the files `tabulate.f90` and +`functions.f90`. +We had not to tell `meson` how to build the project, it figured this out +by itself. + +::::{note} +`meson` is a cross-platform build system, the project you just specified +for your program can be used to compile binaries for your native operating +system or to cross-compile your project for other platforms. +Similarly, the `meson.build` file is portable and will work on different +platforms as well. +:::: + +The documentation of `meson` can be found at the +meson-build webpage. + +## Creating a CMake project + +Similar to `meson` CMake is a high-level build system as well and commonly +used to build Fortran projects. + +::::{note} +CMake follows a slightly different strategy and provides you with a complete +programming language to create your build files. +This is has the advantage that you can do almost everything with CMake, +but your CMake build files can also become as complex as the program you are +building. +:::: + +Start by creating the file `CMakeLists.txt` with the content + +```cmake +cmake_minimum_required(VERSION 3.7) +project("my_proj" LANGUAGES "Fortran") +add_executable("my_prog" "tabulate.f90" "functions.f90") +``` + +Similar to `meson` we are already done with our CMake build file. +We configure our low-level build files with `cmake -B build -G Ninja`, +you should see output similar to this + + -- The Fortran compiler identification is GNU 10.2.0 + -- Detecting Fortran compiler ABI info + -- Detecting Fortran compiler ABI info - done + -- Check for working Fortran compiler: /usr/bin/f95 - skipped + -- Checking whether /usr/bin/f95 supports Fortran 90 + -- Checking whether /usr/bin/f95 supports Fortran 90 - yes + -- Configuring done + -- Generating done + -- Build files have been written to: /home/awvwgk/Examples/build + +You might be surprised that CMake tries to use the compiler `f95`, fortunately +this is just a symbolic link to `gfortran` on most systems and not the actual +`f95` compiler. +To give CMake a better hint you can export the environment variable `FC=gfortran` +rerunning should show the correct compiler name now + + -- The Fortran compiler identification is GNU 10.2.0 + -- Detecting Fortran compiler ABI info + -- Detecting Fortran compiler ABI info - done + -- Check for working Fortran compiler: /usr/bin/gfortran - skipped + -- Checking whether /usr/bin/gfortran supports Fortran 90 + -- Checking whether /usr/bin/gfortran supports Fortran 90 - yes + -- Configuring done + -- Generating done + -- Build files have been written to: /home/awvwgk/Example/build + +In a similar manner you could use your Intel Fortran compiler instead to build +your project (set `FC=ifort`). + +CMake provides support for several low-level build files, since the default is +platform specific, we will just use `ninja` since we already used it together +with `meson`. As before, build your project with `ninja -C build`: + + [1/6] Building Fortran preprocessed CMakeFiles/my_prog.dir/functions.f90-pp.f90 + [2/6] Building Fortran preprocessed CMakeFiles/my_prog.dir/tabulate.f90-pp.f90 + [3/6] Generating Fortran dyndep file CMakeFiles/my_prog.dir/Fortran.dd + [4/6] Building Fortran object CMakeFiles/my_prog.dir/functions.f90.o + [5/6] Building Fortran object CMakeFiles/my_prog.dir/tabulate.f90.o + [6/6] Linking Fortran executable my_prog + +Find and test your program at `build/my_prog` to ensure it works correctly. +The steps `ninja` performed are somewhat different, because there is usually +more than one way to write the low-level build files to accomplish the task +of building a project. Fortunately, we do not have to concern ourselves but have +our build system handle those details for us. + +Finally, we will shortly recap on our complete `CMakeLists.txt` to specify +our project: + +```cmake +cmake_minimum_required(VERSION 3.7) +project("my_proj" LANGUAGES "Fortran") +add_executable("my_prog" "tabulate.f90" "functions.f90") +``` + +We specified that we have a Fortran project and told CMake to create an executable +`my_prog` from the files `tabulate.f90` and `functions.f90`. +CMake knows the details how to build the executable from the specified sources, +so we do not have to worry about the actual steps in the build process. + +::::{tip} +CMake's official reference can be found at the +CMake webpage. +It is organised in manpages, which are also available with your local CMake +installation as well using `man cmake`. While it covers all functionality of +CMake, it sometimes covers them only very briefly. +:::: diff --git a/_sources/learn/building_programs/compiling_source.md.txt b/_sources/learn/building_programs/compiling_source.md.txt new file mode 100644 index 000000000000..2778e64da5dd --- /dev/null +++ b/_sources/learn/building_programs/compiling_source.md.txt @@ -0,0 +1,103 @@ +# Compiling the source code + +The first step in the build process is to compile the source code. The +output from this step is generally known as the object code — a set of +instructions for the computer generated from the human-readable source +code. Different compilers will produce different object codes from the +same source code and the naming conventions are different. + +The consequences: + +- If you use a particular compiler for one source file, you need to use + the same compiler (or a compatible one) for all other pieces. After + all, a program may be built from many different source files and the + compiled pieces have to cooperate. +- Each source file will be compiled and the result is stored in a file + with an extension like ".o" or ".obj". It is these object files that are + the input for the next step: the link process. + +Compilers are complex pieces of software: they have to understand the +language in much more detail and depth than the average programmer. They +also need to understand the inner working of the computer. And then, +over the years they have been extended with numerous options to +customise the compilation process and the final program that will be +built. + +But the basics are simple enough. Take the gfortran compiler, part of +the GNU compiler collection. To compile a simple program as the one +above, that consists of one source file, you run the following command, +assuming the source code is stored in the file "hello.f90": + +```shell +$ gfortran -c hello.f90 +``` + +This results in a file "hello.o" (as the gfortran compiler uses ".o" as +the extension for the object files). + +The option "-c" means: only compile the source files. If you were to +leave it out, then the default action of the compiler is to compile the +source file and start the linker to build the actual executable program. +The command: + +```shell +$ gfortran hello.f90 +``` + +results in an executable file, "a.out" on Linux or "a.exe" on +Windows. + +Some remarks: + +- The compiler may complain about the contents of the source file, if it + finds something wrong with it — a typo for instance or an unknown + keyword. In that case the compilation process is broken off and you will + not get an object file or an executable program. For instance, if + the word "program" was inadvertently typed as "prgoram": + +```shell +$ gfortran hello3.f90 +hello.f90:1:0: + + 1 | prgoram hello + | +Error: Unclassifiable statement at (1) +hello3.f90:3:17: + + 3 | end program hello + | 1 +Error: Syntax error in END PROGRAM statement at (1) +f951: Error: Unexpected end of file in 'hello.f90' +``` + +Using this compilation report you can correct the source code and try +again. + +- The step without "-c" can only succeed if the source file contains a + main program — characterised by the `program` statement in Fortran. + Otherwise the link step will complain about a missing "symbol", something + along these lines: + +```shell +$ gfortran hello2.f90 +/usr/lib/../lib64/crt1.o: In function `_start': +(.text+0x20): undefined reference to `main' +collect2: error: ld returned 1 exit status +``` + +The file "hello2.f90" is almost the same as the file "hello.f90", except +that the keyword `program` has been replaced by the keyword `subroutine`. + +The above examples of output from the compiler will differ per compiler +and platform on which it runs. These examples come from the gfortran +compiler running in a Cygwin environment on Windows. + +Compilers also differ in the options they support, but in general: + +- Options for optimising the code — resulting in faster programs or + smaller memory footprints; +- Options for checking the source code — checks that a variable is not + used before it has been given a value, for instance or checks if some + extension to the language is used; +- Options for the location of include or module files, see below; +- Options for debugging. diff --git a/_sources/learn/building_programs/distributing.md.txt b/_sources/learn/building_programs/distributing.md.txt new file mode 100644 index 000000000000..c2806a97e764 --- /dev/null +++ b/_sources/learn/building_programs/distributing.md.txt @@ -0,0 +1,136 @@ +# Distributing your programs + +When you distribute your programs, there are a number of options you can +choose from: + +1. Distribute the entire source code +2. Distribute a pre-built executable program +3. Distribute static or dynamic libraries that people can use + +**Option 1: Distribute the entire source code** + +By far the simplest — for you as a programmer — is this one: you leave it +up to the user to build it on their own machine. Unfortunately, that +means you will have to have a user-friendly build system in place and +the user will have to have access to suitable compilers. For build systems: +see the previous section. + +**Option 2: Distribute a pre-built executable program** + +A pre-built program that does not need to be customised, other than via its +input, will still need to come with the various run-time libraries and will +be specific to the operating system/environment it was built for. + +The set of run-time libraries differs per operating system and compiler version. +For a freely available compiler like gfortran, the easiest thing is to ask the +user to install that compiler on their system. In the case of Windows: the Cygwin +environment may be called for. + +Alternatively, you can supply copies of the run-time libraries together with your +program. Put them in the directory where they can be found at run-time. + +Note: On Windows, the Intel Fortran comes with a set of _redistributable_ libraries. +These will need to be made available. + +In general: use a tool like "ldd" or "dependency walker" to find out what +libraries are required and consult the documentation of the compiler. + +If your program does allow customisation, consider using dynamic libraries for this. +More is said about this below. + +**Option 3: Distribute static or dynamic libraries that people can use** + +This option is a combination of the first two options. It does put some burden on +the user, as they must create a main program that calls your routines in the +proper way, but they do not need to know much about the build system you used. +You will have to deal with the run-time libraries, though. + +If you choose this option, besides the compiled libraries, you will also need to +supply the module intermediate files. These files are compiler-specific, but so are +the static libraries you build. + +## Distributing the tabulation program + +As shown above, the tabulation program can be built with the user-defined function +in a dynamic library. This enables you to: + +- Ship the executable (with the appropriate run-time libraries) +- Provide a skeleton version of the module, something like: + +```fortran +module user_functions + implicit none +contains + +real function f( x ) +!DEC$ ATTRIBUTES DLLEXPORT :: f + real, intent(in) :: x + + ! your function body goes here + +end function f + +end module user_functions +``` + +- Provide a basic build script with a command like: + +```shell +gfortran -o functions.dll functions.f90 -shared +``` + +or: + +```shell +ifort -exe:functions.dll functions.f90 -dll +``` + +As said, you cannot control that the user has done the right thing — any +DLL "functions.dll" with a function `f` would be accepted, but not necessarily +lead to a successful run. + +An alternative set-up would be to change the main program into a subroutine +and have the function as an argument: + +```fortran +module tabulation + implicit none +contains + +subroutine tabulate( f ) + interface + real function f( x ) + real, intent(in) :: x + end function f + end interface + + ! your implementation goes here + +end subroutine tabulate + +end module tabulation +``` + +Then provide a skeleton main program: + +```fortran +program tabulate_f + use tabulation + + call tabulate( func1 ) + +contains + +real function func1( x ) + real, intent(in) :: x + + ! your function body goes here + +end function func1 + +end program tabulate_f +``` + +The advantage is that the compiler can check the interface of the +function that is passed and that the user has more freedom in the use of the +functionality provided by your library. diff --git a/_sources/learn/building_programs/include_files.md.txt b/_sources/learn/building_programs/include_files.md.txt new file mode 100644 index 000000000000..3e17dbab5d65 --- /dev/null +++ b/_sources/learn/building_programs/include_files.md.txt @@ -0,0 +1,92 @@ +# Include files and modules + +Your program can be contained in various source files, all stored in the +same directory or organised in some convenient directory tree. The +details of the organisation depend on personal taste, arrangements made +by the group of developers you belong to, or simply the history of the +program. Whatever the directory structure is, you will encounter a +situation where the compiler needs assistance in order to compile a +particular source file: + +- Fortran (and other languages) has the possibility to include an + external file. While this feature has become a bit less useful with the + advent of modules, it still has its uses. Quite often, such "include + files" are stored in a directory separated from the directories + containing the source files, because they are used in several locations. + Quite often the name of that directory is "include". +- As we have seen, compiling source code that defines one or more modules, leads to + the compiler generating so-called "module intermediate files" (with the extension ".mod"). + The compiler needs access to these files to be able to read the interfaces + and variables and what not, and based on this information, actually + compile the source code that uses the various modules. + +Compilers support options like `-I` to indicate where these include +files and module intermediate files are to be found. Suppose we store +the two files of our `tabulate` program in the following directory +structure: + +``` +tabulate/ + main/ + tabulate.f90 + sub/ + functions.f90 +``` + +Compiling the file "functions.f90" with the commands + +```shell +$ cd sub +$ gfortran -c functions.f90 +``` + +leads to this structure: + +``` +tabulate/ + main/ + tabulate.f90 + sub/ + functions.f90 + user_functions.mod + functions.o +``` + +To successfully compile and subsequently build the program we need to +tell the compiler where it can find the file "user_functions.mod": + +```shell +$ cd main +$ gfortran -c tabulate.f90 -I ../sub +$ gfortran -o tabulate tabulate.o ../sub/functions.o +``` + +The result: + +``` +tabulate/ + main/ + tabulate.f90 + tabulate.o + tabulate (or tabulate.exe on Windows) + sub/ + functions.f90 + functions.o + user_functions.mod +``` + +Notes: + +- The details differ per compiler. Sometimes the `-I` option should be + followed by a space and then the name of the directory, sometimes the + directory should come consecutively. +- By default the module intermediate files (.mod) are put in the + same directory as the object files. When your program code is organised + in different subdirectories, they will get scattered over the directory + tree, complicating the compilation process. Luckily, + many compilers allow you to specify the output location for these + files. For gfortran this is `-J`, for instance: + `-J../include` (so that the .mod files could all appear in the + same directory) +- For large programs, consisting of many source files, it is important to + think through what organisation to use. diff --git a/_sources/learn/building_programs/index.md.txt b/_sources/learn/building_programs/index.md.txt new file mode 100644 index 000000000000..c789e843eaef --- /dev/null +++ b/_sources/learn/building_programs/index.md.txt @@ -0,0 +1,58 @@ +# Building programs + +Languages like Fortran, C, C++ and Java, to name but a few, share +certain characteristics: you write code in your language of choice but +then you have to build an executable program from that source code. +Other languages are interpreted — the source code is analysed by a +special program and taken as direct instructions. Two very simple +examples of that type of language: Windows batch files and Linux shell +scripts. + +In this tutorial we concentrate on the first type of languages, with +Fortran as the main example. One advantage of compiled languages is that +the build process that you need to build an executable program, is used +to transform the human-readable source code into an efficient program +that can be run on the computer. + +Remark: this tutorial gives examples for the Windows and Linux operating +systems, however the workflow and general principles still apply to macOS. + +## Compiled languages + +Let us have a look at a simple example: + +```fortran +program hello + write(*,*) 'Hello!' +end program hello +``` + +This is just about the simplest program you can write in Fortran and it +is certainly a variation on one of the most famous programs. Even though +it is simple to express in source code, a lot of things actually happen +when the executable that is built from this code runs: + +- A process is started on the computer in such a way that it can write + to the console — the window (DOS-box, xterm, ...) at which you type the + program's name. +- It writes the text "Hello!" to the console. To do so it must properly + interact with the console. +- When done, it finishes, cleaning up all the resources (memory, + connection to the console etc.) it took. + +Fortunately, as a programmer in a high-level language you do not need to +consider all these details. In fact, this is the sort of things that is +taken care of by the build process: the compiler and the linker. + +```{toctree} +:maxdepth: 2 +:hidden: +Compiling the source code +Linking the objects +Run-time libraries +Include files and modules +Managing libraries (static and dynamic libraries) +Build tools +An introduction to make +Distributing your programs +``` diff --git a/_sources/learn/building_programs/linking_pieces.md.txt b/_sources/learn/building_programs/linking_pieces.md.txt new file mode 100644 index 000000000000..261949301e57 --- /dev/null +++ b/_sources/learn/building_programs/linking_pieces.md.txt @@ -0,0 +1,92 @@ +# Linking the objects + +Almost all programs, except for the simplest, are built up from +different pieces. We are going to examine such a situation in +more detail. + +Here is a general program for tabulating a function (source code in +"tabulate.f90"): + +```fortran +program tabulate + use user_functions + + implicit none + real :: x, xbegin, xend + integer :: i, steps + + write(*,*) 'Please enter the range (begin, end) and the number of steps:' + read(*,*) xbegin, xend, steps + + do i = 0, steps + x = xbegin + i * (xend - xbegin) / steps + write(*,'(2f10.4)') x, f(x) + end do +end program tabulate +``` + +Note the `use` statement — this will be where we define the function `f`. + +We want to make the program general, so keep the +specific source code — the implementation of the function `f` — +separated from the general source code. There are several ways to +achieve this, but one is to put it in a different source file. We can +give the general program to a user and they provide a specific source code. + +Assume for the sake of the example that the function is implemented in a +source file "functions.f90" as: + +```fortran +module user_functions + implicit none +contains + +real function f( x ) + real, intent(in) :: x + f = x - x**2 + sin(x) +end function f + +end module user_functions +``` + +To build the program with this specific function, we need to compile two +source files and combine them via the link step into one executable +program. Because the program "tabulate" depends on the module +"function", we need to compile the source file containing our module +first. A sequence of commands to do this is: + +```shell +$ gfortran -c functions.f90 +$ gfortran tabulate.f90 functions.o +``` + +The first step compiles the module, resulting in an object file +"functions.o" and a module intermediate file, "user_functions.mod". This module +file contains all the information the compiler needs to determine that +the function `f` is defined in this module and what its interface is. This +information is important: it enables the compiler to check that you call +the function in the right way. It might be that you made a mistake and +called the function with two arguments instead of one. If the compiler +does not know anything about the function's interface, then it cannot +check anything. + +The second step invokes the compiler in such a way that: + +- it compiles the file "tabulate.f90" (using the module file); +- it invokes the linker to combine the object files tabulate.o and functions.o into an + executable program — with the default name "a.out" or "a.exe" (if you + want a different name, use the option "-o"). + +What you do not see in general is that the linker also adds a number of +extra files in this link step, the run-time libraries. These run-time +libraries contain all the "standard" stuff — low-level routines that do +the input and output to screen, the `sin` function and much more. + +If you want to see the gory details, add the option "-v". This instructs +the compiler to report all the steps that are in detail. + +The end result, the executable program, contains the compiled source +code and various auxiliary routines that make it work. It also contains +references to so-called dynamic run-time libraries (in Windows: DLLs, in +Linux: shared objects or shared libraries). Without these run-time +libraries the program will not start. diff --git a/_sources/learn/building_programs/managing_libraries.md.txt b/_sources/learn/building_programs/managing_libraries.md.txt new file mode 100644 index 000000000000..6beab912c255 --- /dev/null +++ b/_sources/learn/building_programs/managing_libraries.md.txt @@ -0,0 +1,216 @@ +# Managing libraries (static and dynamic libraries) + +If you need to manage a program built of dozens of source files (and +that is not uncommon!), the command-line needed to specify all the +object files will be very long indeed. This soon becomes tedious or +even impossible to maintain. So a different solution is called for: +create your own libraries. + +Libraries contain any number of object files in a compact form, so that +the command-line becomes far shorter: + +```shell +$ gfortran -o tabulate tabulate.f90 functions.o supportlib.a +``` + +where "supportlib.a" is a collection of one, two or many object files, +all compiled and then put into a library. The extension ".a" is used by +Linux and Linux-like platforms. On Windows the extension ".lib" is used. + +Creating your own libraries is not that complicated: +on Linux, you can achieve this using a utility like `ar`: + +```shell +$ gfortran -c file1.f90 file2.f90 +$ gfortran -c file3.f90 ... +$ ar r supportlib.a file1.o file2.o +$ ar r supportlib.a file3.o ... +``` + +or on Windows using the `lib` utility: + +```shell +c:\...> ifort -c file1.f90 file2.f90 +c:\...> ifort -c file3.f90 ... +c:\...> lib /out:supportlib.lib file1.obj file2.obj +c:\...> lib supportlib.lib file3.obj ... +``` + +Note: + +- The command `ar` with the option `r` either creates the library (the + name appears after the option) or adds new object files to the library + (or replaces any existing ones). +- The command `lib` will create a new library if you use specify the + option `/out:` with the name of the new library next to it. To add + object files to an existing library, leave out the `/out:` bit. +- On platforms like Linux there is a particular convention to name + libraries. If you name your library like "libname.a" (note the "lib" + prefix), then you can refer to it as `-lname` in the link step. +- Libraries are often sought in directories indicated by an option `-L` + or `/LIBPATH`. This saves you from having to specify the exact path for + every library. + +Using libraries you can build very large programs without +having to resort to extremely long command lines. + +## Static versus dynamic libraries + +The above discussion is tacitly assuming that you are using the so-called +static libraries. Static libraries (or at least parts of their +contents) become an integral part of the executable program. The only +way to change the routines incorporated in the program is by rebuilding +the program with a new version of the library. + +A flexible alternative is to use the so-called dynamic libraries. These +libraries remain outside the executable program and as a consequence +can be replaced without rebuilding the entire program. Compilers and +indeed the operating system itself rely heavily on such dynamic +libraries. You could consider dynamic libraries as a sort of executable +programs that need a bit of help to be run. + +Building dynamic libraries works slightly differently from building +static libraries: you use the compiler/linker instead of a tool +like `ar` or `lib`. + +On Linux: + +```shell +$ gfortran -fpic -c file1.f90 file2.f90 +$ gfortran -fpic -c file3.f90 ... +$ gfortran -shared -o supportlib.so file1.o file2.o file3.o ... +``` + +On Windows, with the Intel Fortran compiler: + +```shell +$ ifort -c file1.f90 file2.f90 +$ ifort -c file3.f90 ... +$ ifort -dll -exe:supportlib.dll file1.obj file2.obj file3.obj ... +``` + +The differences are that: + +- You need to specify a compile option on Linux, for gfortran that is `-fpic`, + because the object code is slightly different. +- You need to tell in the link step that you want a dynamic library (on + Linux: a shared object/library, hence the extension ".so"; on Windows: + a dynamic link library) + +There is one more thing to be aware of: On Windows you must +explicitly specify that a procedure is to be _exported_, i.e. is visible +in the dynamic library. There are several ways — depending on the +compiler you use — to achieve this. One method is via a so-called +compiler directive: + +```fortran +subroutine myroutine( ... ) +!GCC$ ATTRIBUTES DLLEXPORT:: myroutine +``` + +Or, with the Intel Fortran compiler: + +```fortran +subroutine myroutine( ... ) +!DEC$ ATTRIBUTES DLLEXPORT:: myroutine +``` + +Besides a dynamic library (DLL), a so-called import library may be +generated. + +Because the details differ per compiler, here are two examples: +gfortran on Cygwin and Intel Fortran on Windows. In both cases +we look at the `tabulate` program in the file "tabulate.f90". + +## GNU/Linux and gfortran + +The `tabulate` program requires a user-defined routine `f`. If we +let it reside in a dynamic library, say "functions.dll", we can simply +replace the implementation of the function by putting another dynamic +library in the directory. No need to rebuild the program as such. + +On Cygwin it is not necessary to explicitly export a procedure — all +publically visible routines are exported when you build a dynamic library. +Also, no import library is generated. + +Since our dynamic library can be built from a single source file, we +can take a shortcut: + +```shell +$ gfortran -shared -o functions.dll functions.f90 +``` + +This produces the files "functions.dll" and "user_functions.mod". The +utility `nm` tells us the exact name of the function `f`: + +```shell +$ nm functions.dll +... +000000054f9d7000 B __dynamically_loaded + U __end__ +0000000000000200 A __file_alignment__ +000000054f9d1030 T __function_MOD_f +000000054f9d1020 T __gcc_deregister_frame +000000054f9d1000 T __gcc_register_frame +... +``` + +It has received a prefix `__function_MOD_` to distinguish it from any +other routine "f" that might be defined in another module. + +The next step is to build the program: + +```shell +$ gfortran -o tabulate tabulate.f90 functions.dll +``` + +The DLL and the .mod file are used to build the executable program +with checks on the function's interface, the right name and the reference +to "a" DLL, called "functions.dll". + +You can replace the shared library "functions.dll" by another one, implementing +a different function "f". Of course, you need to be careful to use the correct +interface for this function. The compiler/linker are not invoked anymore, so they +can do no checking. + +## Windows and Intel Fortran + +The setup is the same as with Linux, but on Windows it is necessary +to explicitly export the routines. And an import library is generated — +this is the library that should be used in the link step. + +The source file must contain the compiler directive, otherwise the function `f` +is not exported: + +```fortran +real function f( x ) +!DEC$ ATTRIBUTES DLLEXPORT :: f +``` + +Again we take a shortcut: + +```shell +$ ifort -exe:functions.dll functions.f90 -dll +``` + +This produces the files "functions.dll", "user_functions.mod" as well as "functions.lib" (and two +other files of no importance here). The "dependency walker" program tells us +that the exact name of the function "f" is `FUNCTION_mp_F`. It is also exported, so that +it can be found by the linker in the next step: + +``` +$ ifort tabulate.f90 functions.lib +``` + +Note that we need to specify the name of the export library, not the DLL! + +(Note also: the Intel Fortran compiler uses the name of the first source file as the +name for the executable — here we do without the `-exe` option.) + +Just as under Cygwin, the DLL and the .mod file are used to build the executable program +with checks on the function's interface, the right name and the reference +to "a" DLL, called "functions.dll". + +You can replace the shared library "functions.dll" by another one, but the same +caution is required: while the implementation can be quite different, the +function's interface must be the same. diff --git a/_sources/learn/building_programs/project_make.md.txt b/_sources/learn/building_programs/project_make.md.txt new file mode 100644 index 000000000000..c08229cdb9f3 --- /dev/null +++ b/_sources/learn/building_programs/project_make.md.txt @@ -0,0 +1,478 @@ +# An introduction to make + +We briefly discussed the basics of `make`. This chapter gives ideas +and strategies to scale `make` for larger projects. + +Before going into detail with `make`, consider a few points: + +1. `make` is a Unix tool and might give you a hard time when porting to non-Unix + platforms. That said, there are also different flavors of `make` available, + not all might support the features you want to use. +2. While `make` gives you full control over the build process, it also + means you are responsible for the entire build process, and you have to specify the rules for every detail of your project. + You might find yourself spending a significant amount of time writing and + maintaining your `Makefile` instead of developing your source code. +3. You can work with your `Makefile`, but think about other developers + on your project who may not be familiar with `make`. How much time do you expect them to spend learning your + `Makefile` and would they be able to debug or add features? +4. Pure `make` will not scale. You will soon add auxiliary programs + to dynamically or statically generate your `Makefile`. Those introduce + dependencies and possible sources of errors. The effort needed to test and document those + tools should not be underestimated. + +If you think `make` is suitable for your needs, than you can start writing +your `Makefile`. For this course we will use real world examples from the +package index, which (at the time of writing) use build systems other +than `make`. This guide should present a general recommended style to write +`make`, but also serve as demonstration of useful and interesting features. + +::::{tip} +Even if you find `make` unsuitable to build your project, it is _the_ tool to automate workflows defined by files. Maybe you can leverage its power in a different context. +:::: + +## Getting started + +For this part we will work with + the Fortran CSV module (v1.2.0). +Our goal is to write a `Makefile` to compile this project to a static library. +Start by cloning the repository + +``` +git clone https://github.com/jacobwilliams/fortran-csv-module -b 1.2.0 +cd fortran-csv-module +``` + +::::{tip} +For this part we will work with the code from tag `1.2.0`, to make it as reproducible as possible. Feel free to use the latest version or another project instead. +:::: + +This project uses FoBiS as build system, and you can check the +`build.sh` for options used with FoBiS. We are about to write a `Makefile` +for this project. First, we check the directory structure and the source files + + . + ├── build.sh + ├── files + │   ├── test_2_columns.csv + │   └── test.csv + ├── fortran-csv-module.md + ├── LICENSE + ├── README.md + └── src + ├── csv_kinds.f90 + ├── csv_module.F90 + ├── csv_parameters.f90 + ├── csv_utilities.f90 + └── tests + ├── csv_read_test.f90 + ├── csv_test.f90 + └── csv_write_test.f90 + +We find seven different Fortran source files; the four in `src` should +be compiled and added to a static library while the three in `src/tests` +contain individual programs that depend on this static library. + +Start by creating a simple `Makefile`: + +```make +# Disable the default rules +MAKEFLAGS += --no-builtin-rules --no-builtin-variables + +# Project name +NAME := csv + +# Configuration settings +FC := gfortran +AR := ar rcs +LD := $(FC) +RM := rm -f + +# List of all source files +SRCS := src/csv_kinds.f90 \ + src/csv_module.F90 \ + src/csv_parameters.f90 \ + src/csv_utilities.f90 +TEST_SRCS := src/tests/csv_read_test.f90 \ + src/tests/csv_test.f90 \ + src/tests/csv_write_test.f90 + +# Create lists of the build artefacts in this project +OBJS := $(addsuffix .o, $(SRCS)) +TEST_OBJS := $(addsuffix .o, $(TEST_SRCS)) +LIB := $(patsubst %, lib%.a, $(NAME)) +TEST_EXE := $(patsubst %.f90, %.exe, $(TEST_SRCS)) + +# Declare all public targets +.PHONY: all clean +all: $(LIB) $(TEST_EXE) + +# Create the static library from the object files +$(LIB): $(OBJS) + $(AR) $@ $^ + +# Link the test executables +$(TEST_EXE): %.exe: %.f90.o $(LIB) + $(LD) -o $@ $^ + +# Create object files from Fortran source +$(OBJS) $(TEST_OBJS): %.o: % + $(FC) -c -o $@ $< + +# Define all module interdependencies +csv_kinds.mod := src/csv_kinds.f90.o +csv_module.mod := src/csv_module.F90.o +csv_parameters.mod := src/csv_parameters.f90.o +csv_utilities.mod := src/csv_utilities.f90.o +src/csv_module.F90.o: $(csv_utilities.mod) +src/csv_module.F90.o: $(csv_kinds.mod) +src/csv_module.F90.o: $(csv_parameters.mod) +src/csv_parameters.f90.o: $(csv_kinds.mod) +src/csv_utilities.f90.o: $(csv_kinds.mod) +src/csv_utilities.f90.o: $(csv_parameters.mod) +src/tests/csv_read_test.f90.o: $(csv_module.mod) +src/tests/csv_test.f90.o: $(csv_module.mod) +src/tests/csv_write_test.f90.o: $(csv_module.mod) + +# Cleanup, filter to avoid removing source code by accident +clean: + $(RM) $(filter %.o, $(OBJS) $(TEST_OBJS)) $(filter %.exe, $(TEST_EXE)) $(LIB) $(wildcard *.mod) +``` + +Invoking `make` should build the static library and the test executables as +expected: + + gfortran -c -o src/csv_kinds.f90.o src/csv_kinds.f90 + gfortran -c -o src/csv_parameters.f90.o src/csv_parameters.f90 + gfortran -c -o src/csv_utilities.f90.o src/csv_utilities.f90 + gfortran -c -o src/csv_module.F90.o src/csv_module.F90 + ar rcs libcsv.a src/csv_kinds.f90.o src/csv_module.F90.o src/csv_parameters.f90.o src/csv_utilities.f90.o + gfortran -c -o src/tests/csv_read_test.f90.o src/tests/csv_read_test.f90 + gfortran -o src/tests/csv_read_test.exe src/tests/csv_read_test.f90.o libcsv.a + gfortran -c -o src/tests/csv_test.f90.o src/tests/csv_test.f90 + gfortran -o src/tests/csv_test.exe src/tests/csv_test.f90.o libcsv.a + gfortran -c -o src/tests/csv_write_test.f90.o src/tests/csv_write_test.f90 + gfortran -o src/tests/csv_write_test.exe src/tests/csv_write_test.f90.o libcsv.a + +There are a few things to note there, a `make` build usually interlaces the +build artifacts and the source code, unless you put extra effort into implementing +a build directory. +Also, right now the the source files and dependencies are specified explicitly, +which results in several additional lines even for such a simple project. + +## Automatically generated dependencies + +The main drawback of `make` for Fortran is the missing capability to +determine module dependencies. This is usually solved by either adding those +by hand or automatically scanning the source code with an external tool. +Some compilers (like the Intel Fortran compiler) also offer to generate dependencies in `make` format. + +Before diving into the dependency generation, we will outline the concept of +a robust take on the dependency problem. +First, we want an approach that can process all source files independently, +while each source file provides (`module`) or requires (`use`) modules. +When generating the dependencies only the name of the source file and the +module files are known, and no information on the object file names should be +required. + +If you check the dependency section above you will note that all dependencies are +defined between object files rather than source files. To change this, we can +generate a map from the source files their respective object files: + +```make +# Define a map from each file name to its object file +obj = $(src).o +$(foreach src, $(SRCS) $(TEST_SRCS), $(eval $(src) := $(obj))) +``` + +Note the declaration of `obj` as recursively expanded variable, we effectively +use this mechanism to define a function in `make`. The `foreach` function +allows us to loop over all source files, while the `eval` function allows us +to generate `make` statements and evaluate them for this `Makefile`. + +We adjust the dependencies accordingly as we can now define the name of the +object files through the source file names: + +```make +# Define all module interdependencies +csv_kinds.mod := $(src/csv_kinds.f90) +csv_module.mod := $(src/csv_module.F90) +csv_parameters.mod := $(src/csv_parameters.f90) +csv_utilities.mod := $(src/csv_utilities.f90) +$(src/csv_module.F90): $(csv_utilities.mod) +$(src/csv_module.F90): $(csv_kinds.mod) +$(src/csv_module.F90): $(csv_parameters.mod) +$(src/csv_parameters.f90): $(csv_kinds.mod) +$(src/csv_utilities.f90): $(csv_kinds.mod) +$(src/csv_utilities.f90): $(csv_parameters.mod) +$(src/tests/csv_read_test.f90): $(csv_module.mod) +$(src/tests/csv_test.f90): $(csv_module.mod) +$(src/tests/csv_write_test.f90): $(csv_module.mod) +``` + +The same strategy of creating a map is already used for the module files, now +it is just expanded to the object files as well. + +To generate the respective dependency map automatically we will use an +`awk` script here + +```awk +#!/usr/bin/awk -f + +BEGIN { + # Fortran is case insensitive, disable case sensitivity for matching + IGNORECASE = 1 +} + +# Match a module statement +# - the first argument ($1) should be the whole word module +# - the second argument ($2) should be a valid module name +$1 ~ /^module$/ && +$2 ~ /^[a-zA-Z][a-zA-Z0-9_]*$/ { + # count module names per file to avoid having modules twice in our list + if (modc[FILENAME,$2]++ == 0) { + # add to the module list, the generated module name is expected + # to be lowercase, the FILENAME is the current source file + mod[++im] = sprintf("%s.mod = $(%s)", tolower($2), FILENAME) + } +} + +# Match a use statement +# - the first argument ($1) should be the whole word use +# - the second argument ($2) should be a valid module name +$1 ~ /^use$/ && +$2 ~ /^[a-zA-Z][a-zA-Z0-9_]*,?$/ { + # Remove a trailing comma from an optional only statement + gsub(/,/, "", $2) + # count used module names per file to avoid using modules twice in our list + if (usec[FILENAME,$2]++ == 0) { + # add to the used modules, the generated module name is expected + # to be lowercase, the FILENAME is the current source file + use[++iu] = sprintf("$(%s) += $(%s.mod)", FILENAME, tolower($2)) + } +} + +# Match an include statement +# - the first argument ($1) should be the whole word include +# - the second argument ($2) can be everything, as long as delimited by quotes +$1 ~ /^(#:?)?include$/ && +$2 ~ /^["'].+["']$/ { + # Remove quotes from the included file name + gsub(/'|"/, "", $2) + # count included files per file to avoid having duplicates in our list + if (incc[FILENAME,$2]++ == 0) { + # Add the included file to our list, this might be case-sensitive + inc[++ii] = sprintf("$(%s) += %s", FILENAME, $2) + } +} + +# Finally, produce the output for make, loop over all modules, use statements +# and include statements, empty lists are ignored in awk +END { + for (i in mod) print mod[i] + for (i in use) print use[i] + for (i in inc) print inc[i] +} +``` + +This script makes a few assumptions about the source code it parses, so it will +not work with all Fortran code (namely submodules are not supported), but for +this example it will suffice. + +::::{tip} +Using awk + +The above script uses the `awk` language, which is designed for the purpose +of text stream processing and uses a C-like syntax. In `awk` you can define +groups which are evaluated on certain events, _e.g._ when a line matches a +specific pattern, usually expressed by a + regular expression. + +This `awk` script defines five groups, two of them use the special pattern +`BEGIN` and `END` which are run before the script starts and after the script +finishes, respectively. +Before the script starts we make the script case-insensitive since we are dealing +with Fortran source code here. +We also use the special variable `FILENAME` to determine which file we are +currently parsing and to allow processing multiple files at once. + +With the three patterns defined we are looking for `module`, `use` and +`include` statements as the first space delimited entry. With the used +pattern not all valid Fortran code will be parsed correctly. +A failing example would be: + +```fortran +use::my_module,only:proc +``` + +To make this parsable by the `awk` script we can add another group directly +after the `BEGIN` group, modifying the stream while processing it with + +```awk +{ + gsub(/,|:/, " ") +} +``` + +In theory you would need a full Fortran parser to deal with continuation lines +and other difficulties. This might be possible to implement in `awk` but +would require a huge script in the end. + +Also, keep in mind that generating the dependencies should be fast, an expensive +parser can produce a significant overhead when generating dependencies for a large +code base. Making reasonable assumptions can simplify and speed up this step, but +also introduces an error source in your build tools. + +:::: + +Make the script executable (`chmod +x gen-deps.awk`) and test it with +`./gen-deps.awk $(find src -name '*.[fF]90')`. You should see output like this: + + csv_utilities.mod = $(src/csv_utilities.f90) + csv_kinds.mod = $(src/csv_kinds.f90) + csv_parameters.mod = $(src/csv_parameters.f90) + csv_module.mod = $(src/csv_module.F90) + $(src/csv_utilities.f90) += $(csv_kinds.mod) + $(src/csv_utilities.f90) += $(csv_parameters.mod) + $(src/csv_kinds.f90) += $(iso_fortran_env.mod) + $(src/tests/csv_read_test.f90) += $(csv_module.mod) + $(src/tests/csv_read_test.f90) += $(iso_fortran_env.mod) + $(src/tests/csv_write_test.f90) += $(csv_module.mod) + $(src/tests/csv_write_test.f90) += $(iso_fortran_env.mod) + $(src/tests/csv_test.f90) += $(csv_module.mod) + $(src/tests/csv_test.f90) += $(iso_fortran_env.mod) + $(src/csv_parameters.f90) += $(csv_kinds.mod) + $(src/csv_module.F90) += $(csv_utilities.mod) + $(src/csv_module.F90) += $(csv_kinds.mod) + $(src/csv_module.F90) += $(csv_parameters.mod) + $(src/csv_module.F90) += $(iso_fortran_env.mod) + +Note that the scripts output will use recursively expanded variables and not +define any dependencies yet, because out-of-order declaration of variables +might be necessary and we do not want to create any target by accident. +You can verify that the same information as in the above handwritten snippet is +present. The only exception is the additional dependency on the +`iso_fortran_env.mod`, since it is an undefined variable it will just expand +to an empty string and not introduce any further dependencies. + +Now, you can finally include this piece in your `Makefile` to automate the +dependency generation: + +```make +# Disable the default rules +MAKEFLAGS += --no-builtin-rules --no-builtin-variables + +# Project name +NAME := csv + +# Configuration settings +FC := gfortran +AR := ar rcs +LD := $(FC) +RM := rm -f +GD := ./gen-deps.awk + +# List of all source files +SRCS := src/csv_kinds.f90 \ + src/csv_module.F90 \ + src/csv_parameters.f90 \ + src/csv_utilities.f90 +TEST_SRCS := src/tests/csv_read_test.f90 \ + src/tests/csv_test.f90 \ + src/tests/csv_write_test.f90 + +# Add source and tests directories to search paths +vpath % .: src +vpath % .: src/tests + +# Define a map from each file name to its object file +obj = $(src).o +$(foreach src, $(SRCS) $(TEST_SRCS), $(eval $(src) := $(obj))) + +# Create lists of the build artefacts in this project +OBJS := $(addsuffix .o, $(SRCS)) +DEPS := $(addsuffix .d, $(SRCS)) +TEST_OBJS := $(addsuffix .o, $(TEST_SRCS)) +TEST_DEPS := $(addsuffix .d, $(TEST_SRCS)) +LIB := $(patsubst %, lib%.a, $(NAME)) +TEST_EXE := $(patsubst %.f90, %.exe, $(TEST_SRCS)) + +# Declare all public targets +.PHONY: all clean +all: $(LIB) $(TEST_EXE) + +# Create the static library from the object files +$(LIB): $(OBJS) + $(AR) $@ $^ + +# Link the test executables +$(TEST_EXE): %.exe: %.f90.o $(LIB) + $(LD) -o $@ $^ + +# Create object files from Fortran source +$(OBJS) $(TEST_OBJS): %.o: % | %.d + $(FC) -c -o $@ $< + +# Process the Fortran source for module dependencies +$(DEPS) $(TEST_DEPS): %.d: % + $(GD) $< > $@ + +# Define all module interdependencies +include $(DEPS) $(TEST_DEPS) +$(foreach dep, $(OBJS) $(TEST_OBJS), $(eval $(dep): $($(dep)))) + +# Cleanup, filter to avoid removing source code by accident +clean: + $(RM) $(filter %.o, $(OBJS) $(TEST_OBJS)) $(filter %.d, $(DEPS) $(TEST_DEPS)) $(filter %.exe, $(TEST_EXE)) $(LIB) $(wildcard *.mod) +``` + +Here additional dependency files are generated for each source file individually +and than included into the main `Makefile`. +Also, the dependency files are added as dependency to the object files to ensure +they are generated before the object is compiled. The pipe character in +the dependencies defines an order of the rules without a timestamp dependency, +because it is not necessary to recompile an object file in case dependencies are +regenerated and potentially unchanged. + +Again, we make use of the `eval` function to generate the dependencies in a +`foreach` loop over all object files. Note that we created a map between +the object files in the dependency files, expanding `dep` once yields the +object file name, expanding it again yields the object files it depends on. + +Building your project with `make` should give an output similar to + + ./gen-deps.awk src/csv_utilities.f90 > src/csv_utilities.f90.d + ./gen-deps.awk src/csv_parameters.f90 > src/csv_parameters.f90.d + ./gen-deps.awk src/csv_module.F90 > src/csv_module.F90.d + ./gen-deps.awk src/csv_kinds.f90 > src/csv_kinds.f90.d + gfortran -c -o src/csv_kinds.f90.o src/csv_kinds.f90 + gfortran -c -o src/csv_parameters.f90.o src/csv_parameters.f90 + gfortran -c -o src/csv_utilities.f90.o src/csv_utilities.f90 + gfortran -c -o src/csv_module.F90.o src/csv_module.F90 + ar rcs libcsv.a src/csv_kinds.f90.o src/csv_module.F90.o src/csv_parameters.f90.o src/csv_utilities.f90.o + ./gen-deps.awk src/tests/csv_read_test.f90 > src/tests/csv_read_test.f90.d + gfortran -c -o src/tests/csv_read_test.f90.o src/tests/csv_read_test.f90 + gfortran -o src/tests/csv_read_test.exe src/tests/csv_read_test.f90.o libcsv.a + ./gen-deps.awk src/tests/csv_test.f90 > src/tests/csv_test.f90.d + gfortran -c -o src/tests/csv_test.f90.o src/tests/csv_test.f90 + gfortran -o src/tests/csv_test.exe src/tests/csv_test.f90.o libcsv.a + ./gen-deps.awk src/tests/csv_write_test.f90 > src/tests/csv_write_test.f90.d + gfortran -c -o src/tests/csv_write_test.f90.o src/tests/csv_write_test.f90 + gfortran -o src/tests/csv_write_test.exe src/tests/csv_write_test.f90.o libcsv.a + +Once the dependency files are generated, `make` will only update them if the +source changes and not require to rebuild them again for every invocation. + +::::{tip} +With correct dependencies you can leverage parallel execution of your `Makefile`, just use the `-j` flag to create multiple `make` processes. +:::: + +Since dependencies can now be generated automatically, there is no need to specify +the source files explicitly, the `wildcard` function can be used to determine +them dynamically: + +```make +# List of all source files +SRCS := $(wildcard src/*.f90) \ + $(wildcard src/*.F90) +TEST_SRCS := $(wildcard src/tests/*.f90) +``` diff --git a/_sources/learn/building_programs/runtime_libraries.md.txt b/_sources/learn/building_programs/runtime_libraries.md.txt new file mode 100644 index 000000000000..1985ebe80b6b --- /dev/null +++ b/_sources/learn/building_programs/runtime_libraries.md.txt @@ -0,0 +1,60 @@ +# Run-time libraries + +To illustrate that even a simple program depends on external run-time +libraries, here is the output from the `ldd` utility that reports such +dependencies: + +```shell +$ ldd tabulate.exe + ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7ff88f2b0000) + KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7ff88e450000) + KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7ff88b9e0000) + cygwin1.dll => /usr/bin/cygwin1.dll (0x180040000) + cyggfortran-5.dll => /usr/bin/cyggfortran-5.dll (0x3efd20000) + cygquadmath-0.dll => /usr/bin/cygquadmath-0.dll (0x3ee0b0000) + cyggcc_s-seh-1.dll => /usr/bin/cyggcc_s-seh-1.dll (0x3f7000000) +``` + +Other compilers or other versions of the same compiler will probably +require different dynamic libraries. As long as you run the program on +the same computer — or, more accurately, within the same environment — +there should be no problem. However, when such a library cannot be +found, you will get (hopefully) an error message and the program stops +immediately. + +Therefore it is good to know what libraries are required. On Linux and +Linux-like environments, the `ldd` utility is a great help. On Windows, +you may want to use the `dependency walker` (the latest version, which +works very nicely with Windows 10, is found here: ) + +Another thing you should know is where the program tries to find these +libraries. That is a vast subject in its own right and full of +complications and history. Here we merely scratch the surface: + +_On Linux:_ + +- The environment variable `LD_LIBRARY_PATH` is used. It consists of a + list of directories to be searched, each directory separated via colons + (:) from the others. For instance: `/usr/lib:/usr/local/lib` — typical + system directories. +- At the link step you can also use an option to set `RPATH`, a list + of directories that is put into the executable file itself. +- Then there are several system directories that are searched. + +_On Windows:_ + +- The directory containing the executable program may also contain + dynamic libraries. +- The environment variable "PATH" is used. Again a list of directories + to be searched, but now the separating character is the semicolon (;). +- A set of system directories is searched. + +Unfortunately, the details can change from one version of the operating +system to the next. The above is merely an indication — use tools like +"ldd" or "dependency walker" to find out what libraries are loaded and +where they are found. + +If you want to share your program with colleagues or clients or simply +users all over the world, you will have to take care that, besides the +program, you also distribute the libraries it depends on. For more +information: see below. diff --git a/_sources/learn/intrinsics/array.md.txt b/_sources/learn/intrinsics/array.md.txt new file mode 100644 index 000000000000..8955568e9b9d --- /dev/null +++ b/_sources/learn/intrinsics/array.md.txt @@ -0,0 +1,8 @@ +# Properties and attributes of arrays + +::::{jinja} intrinsics +{% for name in array %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/bit.md.txt b/_sources/learn/intrinsics/bit.md.txt new file mode 100644 index 000000000000..103ac5f5b9b6 --- /dev/null +++ b/_sources/learn/intrinsics/bit.md.txt @@ -0,0 +1,8 @@ +# Bit-level inquiry and manipulation + +::::{jinja} intrinsics +{% for name in bit %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/cfi.md.txt b/_sources/learn/intrinsics/cfi.md.txt new file mode 100644 index 000000000000..b0c396306edc --- /dev/null +++ b/_sources/learn/intrinsics/cfi.md.txt @@ -0,0 +1,8 @@ +# Procedures for binding to C interfaces + +::::{jinja} intrinsics +{% for name in cfi %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/character.md.txt b/_sources/learn/intrinsics/character.md.txt new file mode 100644 index 000000000000..f136540e8c60 --- /dev/null +++ b/_sources/learn/intrinsics/character.md.txt @@ -0,0 +1,8 @@ +# Basic procedures for manipulating _character_ variables + +::::{jinja} intrinsics +{% for name in character %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/compiler.md.txt b/_sources/learn/intrinsics/compiler.md.txt new file mode 100644 index 000000000000..aea194cbaf47 --- /dev/null +++ b/_sources/learn/intrinsics/compiler.md.txt @@ -0,0 +1,8 @@ +# Information about compiler and compiler options used for building + +::::{jinja} intrinsics +{% for name in compiler %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/index.md.txt b/_sources/learn/intrinsics/index.md.txt new file mode 100644 index 000000000000..1726a3130248 --- /dev/null +++ b/_sources/learn/intrinsics/index.md.txt @@ -0,0 +1,93 @@ +# Fortran Intrinsics + +This is a collection of extended descriptions of the Fortran intrinsics +based on the reference document +"[Current F2018 Working Document as of April 2018](http://isotc.iso.org/livelink/livelink?func=ll&objId=19442438&objAction=Open)". +Vendor-specific extensions are not included. + +::::{dropdown} Intrinsics +:color: primary + +```{toctree} +:maxdepth: 2 +array +bit +character +compiler +cfi +math +model +numeric +parallel +state +system +transform +type +GNU Free Documentation License + +:::: + +## Overview + +The standard documents and most vendor-supplied descriptions of the +intrinsics are often very brief and concise to the point where the +functionality of the intrinsics becomes obscure, particularly to someone +unfamiliar with the procedure. + +By describing the procedures here + +- in greater detail +- with a working example +- providing links to additional resources + (including additional documents at fortran-lang.org and related + discussions in Fortran Discourse) + +these documents strive to clarify the intrinsics for Fortran programmers. + +This is a community-driven resource and everyone is encouraged to contribute +to the documents. For contribution guidelines see [minibook guide](/community/minibooks) +and the following Copyright guidelines. + +## See Also + +- The [Fortran stdlib](https://stdlib.fortran-lang.org/) project + +- [fpm(1)](https://fortran-lang.org/packages/fpm) packages, many of + which are general-purpose libraries/modules + +- [M_intrinsics](https://github.com/urbanjost/M_intrinsics) a related project + to leverage the descriptions here to generate man-pages and an OS-agnostic CLI + (Command Line Interface) program. This includes a tar(1) and zip(1) + file of man-pages and a self-contained Fortran program that lets you + view the non-graphical plain ASCII portions of the documentation from + a terminal interface. + +## Text Content Copyrights + +Many of the documents presented here are modified versions of +man-pages from the [Fortran Wiki](https://fortranwiki.org) and as such +are available under the terms of the GNU Free Documentation License +[**GFDL**](GNU_Free_Documentation_License.md) with no invariant sections, +front-cover texts, or back-cover texts. + +If you contribute to this site by modifying the files marked as GFDL, +you thereby agree to license the contributed material to the public +under the GFDL (version 1.2 or any later version published by the Free +Software Foundation, with no invariant sections, front-cover texts, +or back-cover texts). + +If you contribute new material you thereby agree to release it under +the MIT license, and should indicate this by placing MIT on the +specially-formatted last line. For example, change + +```text +###### fortran-lang intrinsic descriptions +``` + +to + +```text +###### fortran-lang intrinsic descriptions (License: MIT) @urbanjost +``` + +Written in [Myst-Markdown](https://myst-parser.readthedocs.io/en/latest/) diff --git a/_sources/learn/intrinsics/math.md.txt b/_sources/learn/intrinsics/math.md.txt new file mode 100644 index 000000000000..dda72e01f823 --- /dev/null +++ b/_sources/learn/intrinsics/math.md.txt @@ -0,0 +1,8 @@ +# General mathematical functions + +::::{jinja} intrinsics +{% for name in math %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/model.md.txt b/_sources/learn/intrinsics/model.md.txt new file mode 100644 index 000000000000..f2aa1c70efe1 --- /dev/null +++ b/_sources/learn/intrinsics/model.md.txt @@ -0,0 +1,8 @@ +# Controlling and querying the current numeric model + +::::{jinja} intrinsics +{% for name in model %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/numeric.md.txt b/_sources/learn/intrinsics/numeric.md.txt new file mode 100644 index 000000000000..665626cfbfb4 --- /dev/null +++ b/_sources/learn/intrinsics/numeric.md.txt @@ -0,0 +1,8 @@ +# Manipulation and properties of numeric values + +::::{jinja} intrinsics +{% for name in numeric %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/parallel.md.txt b/_sources/learn/intrinsics/parallel.md.txt new file mode 100644 index 000000000000..9b3e17adfc35 --- /dev/null +++ b/_sources/learn/intrinsics/parallel.md.txt @@ -0,0 +1,8 @@ +# Parallel programming using co\_arrays and co\_indexed arrays + +::::{jinja} intrinsics +{% for name in parallel %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/state.md.txt b/_sources/learn/intrinsics/state.md.txt new file mode 100644 index 000000000000..555b27b854b5 --- /dev/null +++ b/_sources/learn/intrinsics/state.md.txt @@ -0,0 +1,8 @@ +# General and miscellaneous intrinsics + +::::{jinja} intrinsics +{% for name in state %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/system.md.txt b/_sources/learn/intrinsics/system.md.txt new file mode 100644 index 000000000000..3604c22d9c1e --- /dev/null +++ b/_sources/learn/intrinsics/system.md.txt @@ -0,0 +1,8 @@ +# Accessing external system information + +::::{jinja} intrinsics +{% for name in system %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/transform.md.txt b/_sources/learn/intrinsics/transform.md.txt new file mode 100644 index 000000000000..770c3188c94d --- /dev/null +++ b/_sources/learn/intrinsics/transform.md.txt @@ -0,0 +1,8 @@ +# Matrix multiplication, dot product, and array shifts + +::::{jinja} intrinsics +{% for name in transform %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/intrinsics/type.md.txt b/_sources/learn/intrinsics/type.md.txt new file mode 100644 index 000000000000..0a83294a8ee8 --- /dev/null +++ b/_sources/learn/intrinsics/type.md.txt @@ -0,0 +1,60 @@ +# Types and kinds + +These intrinsics allow for explicitly casting one type of variable to +another or can be used to conditionally execute code blocks based on +variable types when working with polymorphic variables. + +## Fortran Data Types + +Fortran provides five basic intrinsic data types: + +- Integer type + : The integer types can hold only whole number values. +- Real type + : Stores floating point numbers, such as 2.0, 3.1415, -100.876, etc. +- Complex type + : A complex number has two parts, + the real part and the imaginary part. Two consecutive floating + point storage units store the two parts. +- Logical type + : There are only two logical values: .true. and .false. +- Character type + : The character type stores strings. The length of the string + can be specified by the **len** specifier. If no length is specified, it is 1. + +These "types" can be of many "kinds". Often different numeric kinds +take up different storage sizes and therefore can represent +different ranges; but a different kind can have other meanings. +A _character_ variable might represent ASCII characters or UTF-8 or +Unicode characters, for example. + +You can derive your own data types from these fundamental types as well. + +## Implicit Typing + +Fortran allows a feature called implicit typing, i.e., you do not have +to declare some variables before use. By default if a variable is not declared, +then the first letter of its name will determine its type: + +1. Variable names starting with **i-n** (the first two letters of + "integer") specify _integer_ variables. + +2. All other variable names default to _real_. + +However, in most circles it is considered good programming practice to declare all the +variables. For that to be enforced, you start your variable declaration section with +a statement that turns off implicit typing: +the statement + +```fortran +implicit none +``` + +For more information refer to the **implicit** statement. + +::::{jinja} intrinsics +{% for name in type %} +```{include} _pages/{{ name }}.md +``` +{% endfor %} +:::: diff --git a/_sources/learn/os_setup/choose_compiler.md.txt b/_sources/learn/os_setup/choose_compiler.md.txt new file mode 100644 index 000000000000..8e6cb3acc2e6 --- /dev/null +++ b/_sources/learn/os_setup/choose_compiler.md.txt @@ -0,0 +1,7 @@ +# Choosing a compiler + +A comprehensive list of available compilers is provided [here](/compilers). In this guide, we will focus only on those that are free to install and use. + +Of those listed at the link above, open source and free are GFortran (with OpenCoarrays), Flang, and LFortran. NVIDIA and Intel offer their compilers for free and as of the latest update of this tutorial, NVFortran (NVIDIA) is available only for Linux systems, while Intel oneAPI is available for Linux, Windows and macOS systems. Both are well documented and readers can find detailed information about installing and using them on their websites respectively. + +In the next chapter, we use GFortran for the tutorial as it is a mature open source compiler. We encourage users to also try other open source and commercial compilers. diff --git a/_sources/learn/os_setup/ides.md.txt b/_sources/learn/os_setup/ides.md.txt new file mode 100644 index 000000000000..40d33474a4e5 --- /dev/null +++ b/_sources/learn/os_setup/ides.md.txt @@ -0,0 +1,15 @@ +# IDEs + +An IDE (Integrated Development Environment) refers to a complete software development environment, where, all those packages that come as external plug-ins in Text-Editors, are already integrated within the software. An IDE is usually optimized towards a specific set of languages. For example it is very common for IDEs to advertise themselves towards either compiled or interpreted languages, or even towards a single language, or depending on the application developed, like scientific or web development. +IDEs are recommended for beginner programmers, since it is possible to start coding with minimum effort after installation. However, it is quite common, in professional environments, individual developers and teams alike, to choose an IDE for large projects because of some unique features that they may offer over a Text-Editor. + +A list of popular IDEs that provide good Fortran support is provided in alphabetical order: + +- [AbsoftTools](https://www.absoft.com/technology/absofttools-fortran-ide/): commercial product, cross-platform, comes with Absoft's own Fortran compiler. +- [Code::Blocks](http://www.codeblocks.org/): free product, cross-platform and supports multiple compilers. Plenty of tutorials online on how to install it and add a Fortran Compiler. As well as a recent presentation, [here](https://www.youtube.com/watch?v=M1RwVGGSAgE&ab_channel=FortranCon), of its capabilities and future prospects at the International Fortran Conference 2020 by its main developer. +- [Eclipse-Photran](https://marketplace.eclipse.org/content/photran-fortran-ide-eclipse) _Photran is an IDE and refactoring tool for Fortran based on Eclipse and the C/C++ Development Tools_. A free product, cross-platform and supports multiple compilers. +- [Geany](https://www.geany.org/): a free product, cross platform and supports multiple compilers. +- [NAG Fortran Builder](https://www.nag.com/content/nag-fortran-builder-0) is a commercial product, available in Windows and MacOS and supports NAG's own Fortran Compiler. +- [Plato](https://www.silverfrost.com/16/ftn95/plato.aspx) is a commercial product, cross-platform, comes with Silverfrost's Fortran FTN95 own Fortran compiler. +- [SimplyFortran](https://simplyfortran.com/) is a commercial product, cross-platform with support of the GNU Fortran compiler. +- [Visual Studio](https://visualstudio.microsoft.com/) its _Community Edition 2019_ is a free product, available in Windows and macOS and supports only Intel's Fortran compiler, now bundled with many other free-to-use HPC tools under _Intel oneAPI_. diff --git a/_sources/learn/os_setup/index.md.txt b/_sources/learn/os_setup/index.md.txt new file mode 100644 index 000000000000..cc4af6756480 --- /dev/null +++ b/_sources/learn/os_setup/index.md.txt @@ -0,0 +1,33 @@ +

+ +
A beginner's tutorial on the software that needs to be installed to start with Fortran development
+

+ +--- + +_Authors: Stavros Meskos, Laurence Kedward, Arjen Markus, Ondřej Čertík, Milan Curcic_ + +_Last update: 16-Feb-2021_ + +--- + +# Setting up your OS + +In this mini-book we address the very first problem that many new Fortran programmers encounter. Before everything, you will need to choose a compiler and install it. Then you will need a text editor or perhaps an IDE (Integrated Development Environment). There are many options, most of them available in all major OSs (operating systems). However, the process to install and configure them greatly differs between Windows, Linux, and macOS. There are several Fortran compilers. Here, we pick those that meet certain criteria and provide a guide on how to install them in all the aforementioned OSs. A list of popular text editors and IDEs and information on how to choose between them is presented as well. + +::::{note} +If you have already set up your environment, you may skip this tutorial and move forward with the Quickstart Fortran Tutorial to start coding your first `Hello World` program or with the Building programs mini-book to understand how a compiler works. +:::: + +--- + +_The choice of text editors and IDEs has been controversial among the developers. What you choose is a matter of personal taste. Every solution comes with its own pros and cons. For that reason, in this guide, we will not push the reader towards one or another direction. We will, however, present a list of the most popular tools._ + +```{toctree} +:hidden: +Choosing a compiler +Installing GFortran +Text Editors +IDEs +Smart Tips +``` diff --git a/_sources/learn/os_setup/install_gfortran.md.txt b/_sources/learn/os_setup/install_gfortran.md.txt new file mode 100644 index 000000000000..c6df10ce3cdd --- /dev/null +++ b/_sources/learn/os_setup/install_gfortran.md.txt @@ -0,0 +1,149 @@ +# Installing GFortran + +GFortran is the name of the [GNU Fortran project](https://gcc.gnu.org/fortran/). The main [wiki](https://gcc.gnu.org/wiki/GFortran) page offers many helpful links about GFortran, as well as Fortran in general. In this guide, the installation process for GFortran on Windows, Linux, macOS and OpenBSD is presented in a beginner-friendly format based on the information from [GFortranBinaries](https://gcc.gnu.org/wiki/GFortranBinaries). + +## Windows + +Three sources provide quick and easy way to install GFortran compiler on Windows: + +1. [http://www.equation.com](http://www.equation.com/servlet/equation.cmd?fa=fortran), provides 32 and 64-bit x86 + executables for GCC version 12.1. +2. [TDM GCC](https://jmeubank.github.io/tdm-gcc/articles/2021-05/10.3.0-release), provides 32 and 64-bit x86 executables for GCC version 10.3. +3. [MinGW-w64](https://www.mingw-w64.org/downloads/#mingw-builds) provides a 64-bit x86 executable for GCC version 12.2. + +In all the above choices, the process is straightforward—just download the installer and follow the installation wizard. + +### Unix-like development on Windows + +For those familiar with a unix-like development environment, several emulation options are available on Windows each of which provide packages for gfortran: + +- **Cygwin:** A runtime environment that provides POSIX compatibility to Windows. +- **MSYS2:** A collection of Unix-like development tools, based on modern Cygwin and MinGW-w64. +- **Windows Subsystem for Linux (WSL):** An official compatibility layer for running Linux binary executables on Windows. With [Windows Subsystem for Linux GUI](https://github.com/microsoft/wslg) one can run text editors and other graphical programs. + +All of the above approaches provide access to common shells such as bash and development tools including GNU coreutils, Make, CMake, autotools, git, grep, sed, awk, ssh, etc. + +We recommend the WSL environment for those looking for a Unix-like development environment on Windows. + +## Linux + +### Debian-based (Debian, Ubuntu, Mint, etc...) + +Check whether you have gfortran already installed + +```bash +which gfortran +``` + +If nothing is returned then gfortran is not installed. +To install gfortran type: + +```bash +sudo apt install gfortran +``` + +to check what version was installed type: + +```bash +gfortran --version +``` + +You can install multiple versions up to version 10 (on Ubuntu 22.04) by typing the version number immediately after "gfortran", e.g.: + +```bash +sudo apt install gfortran-8 +``` + +To install newer versions on older Ubuntu releases, you will first need to add the following repository, update, and then install: + +```bash +sudo add-apt-repository ppa:ubuntu-toolchain-r/test +sudo apt update +sudo apt install gfortran-10 +``` + +Finally, you can switch between different versions or set the default one with the **update-alternatives** ([see manpage](https://manpages.ubuntu.com/manpages/jammy/en/man1/update-alternatives.1.html)). There are many online tutorials on how to use this feature. A well structured one using as an example C and C++ can be found [here](https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-22-04-lts-jammy-jellyfish), you can apply the same logic by replacing either `gcc` or `g++` with `gfortran`. + +### RPM-based (Red Hat Enterprise Linux, CentOS, Fedora, openSUSE) + +```bash +sudo yum install gcc-gfortran +``` + +Since Fedora 22 and Red Hat Enterprise Linux 8, `dnf` is the default package manager: + +```bash +sudo dnf install gcc-gfortran +``` + +### Arch-based (Arch Linux, EndeavourOS, Manjaro, etc...) + +```bash +sudo pacman -S gcc-fortran +``` + +## macOS + +### Xcode + +If you have Xcode installed, open a terminal window and type: + +```bash +xcode-select --install +``` + +### Binaries + +Go to [fxcoudert/gfortran-for-macOS](https://github.com/fxcoudert/gfortran-for-macOS/releases) to directly install binaries. + +### Homebrew + +```bash +brew install gcc +``` + +### Fink + +GNU-gcc Package [link](https://pdb.finkproject.org/pdb/browse.php?summary=GNU+Compiler+Collection+Version) + +### MacPorts + +Search for available gcc versions: + +```bash +port search gcc +``` + +Install a gcc version: + +```bash +sudo port install gcc10 +``` + +## OpenBSD + +```bash +pkg_add g95 +``` + +On OpenBSD, the GFortran executable is named `egfortran`. To test it, type: + +```bash +egfortran -v +``` + +--- + +## OpenCoarrays + +[OpenCoarrays](http://www.opencoarrays.org/) is an open-source software project that produces an application binary interface (ABI) used by the GNU Compiler Collection (GCC) Fortran front-end to build executable programs that leverage the parallel programming features of Fortran 2018. Since OpenCoarrays is not a separate compiler, we include it here, under gfortran. + +While with gfortran you can compile perfectly valid code using coarrays, the generated binaries will only run in a single image (_image_ is a Fortran term for a parallel process), that is, in serial mode. OpenCoarrays allows running code in parallel on shared- and distributed-memory machines, similar to MPI: + +```bash +cafrun -n +``` + +The process of installation is provided in a clear and comprehensive manner on the official site. + +We emphasize that native installation on Windows is not possible. It is only possible through WSL. diff --git a/_sources/learn/os_setup/text_editors.md.txt b/_sources/learn/os_setup/text_editors.md.txt new file mode 100644 index 000000000000..1b7047f10a0b --- /dev/null +++ b/_sources/learn/os_setup/text_editors.md.txt @@ -0,0 +1,52 @@ +# Text Editors + +After you have installed your compiler, you will need a text editor to write your code. Any text editor can serve this purpose, even the built-in Notepad on Windows. However, there are specialized editors for programming languages. These editors come with many useful features like auto-complete, syntax-highlighting, auto-indentation, brace-matching, and many more, with few of them pre-installed and the majority in form of external plug-ins. This means that by default these features are not installed in the editor, but it's up to you to search for them through a package manager and install and configure them manually. + +Here's a list of the most popular text editors that support Fortran syntax, in alphabetical order: + +- [Atom](https://atom.io/) +- [Emacs](https://www.gnu.org/software/emacs/) +- [NotePad++](https://notepad-plus-plus.org/) +- [SublimeText](https://www.sublimetext.com/) +- [Vim](https://www.vim.org/) and [Neovim](https://neovim.io/) +- [Visual Studio Code](https://code.visualstudio.com/) + +A comprehensive list with more choices is provided in [fortranwiki.org](http://fortranwiki.org/fortran/show/Source+code+editors). + +Things to consider before choosing a text editor: + +- **Ergonomics:** This is purely subjective and concerns how easy, uninterrupted the UI (User Interface) feels to the developer while using the editor. +- **Extensibility:** As mentioned above, text editors come with many features as external packages. The variety, the installation process, the documentation, and user-friendliness of the packages all fall under this category. +- **Speed:** With how powerful modern hardware can be, the speed of editors is becoming of minor importance. However, for the less powerful systems, you may want to consider this as well. Heavyweight editors may impact the writing performance. For example, you can expect Atom and VSCode to run slower than the lightweight editors like Vim or Emacs. +- **Learning curve:** Last but not least, new users should consider how easy it is to get used to a new editor. Vim and Emacs have a steep learning curve and are notoriously difficult for newcomers. They offer a uniquely different experience than any other editor by forcing you to use the keyboard for all editing tasks. + +## Configuring VS Code + +With the editor opened, at the main UI, at the buttoned-column on the left, there is a _four-square-shaped_ icon to open the Marketplace for extensions. +Install [Modern Fortran](https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran) for syntax highlighting, linting and Language Server support and formatting. + +### Additional Tools + +The following extensions are not essential but most users might find them useful: + +- [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) for advanced Git visualization and operations. +- [CMake](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) for full-featured CMake integration in VS Code. +- [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) for working with containers, on a remote machines, or in the Windows Subsystem for Linux (WSL). +- [Even Better TOML by tamasfe](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml). For Fortran developers that are using the new [fpm](https://github.com/fortran-lang/fpm) _Fortran Package Manager_, a TOML language support might come in handy. + +## Configuring SublimeText + +A well structured gist that provides instructions on how to set up SublimeText for Fortran developement is given [here](https://gist.github.com/sestelo/6b01e1405c1d0fa7f0ecdc951caaa995). + +## Configuring Atom + +Atom's configuration process is similar to VSCode one. At the main interface, if the _Welcome Guide_ page is already opened for you, just click the **Install a Package** option, otherwise you can find the same option through the navigation bar at the top by clicking _Packages_. In doing so a new page under _Settings_ opens where you can just start typing the package you want to install. + +One package that includes many Fortran features is [IDE-FORTRAN by hansec](https://atom.io/packages/ide-fortran). It needs the following packages to be installed: + +- [atom-ide ui by facebook-atom](https://atom.io/packages/atom-ide-ui) +- [language-fortran by dparkins](https://atom.io/packages/language-fortran) + +Additionally just like in VSCode it needs [Python](https://www.python.org/) and [Fortran Language Server](https://github.com/hansec/fortran-language-server) to be installed. + +For version control a very popular package is [Git-Plus by akonwi](https://atom.io/packages/git-plus). diff --git a/_sources/learn/os_setup/tips.md.txt b/_sources/learn/os_setup/tips.md.txt new file mode 100644 index 000000000000..65b17da4a9c7 --- /dev/null +++ b/_sources/learn/os_setup/tips.md.txt @@ -0,0 +1,10 @@ +# Smart Tips + +To conclude, we give a few tips that may help you to choose a compiler and an editor or an IDE. + +- Check [this site](https://www.fortran.uk/fortran-compiler-comparisons/) for a comprehensive comparison of Fortran compilers. +- Since NVFortran version 17.1, the support for compute capability 2.0 (Fermi) and lower has been removed. This is important because, at any time, only the latest compiler version is free to download. Users with older GPUs will not be able to run CUDA Fortran with the current (20.7) or future versions. Read [this wiki](https://www.wikiwand.com/en/CUDA#/GPUs_supported) to find your GPU's compute capability and cross-check with the latest CUDA SDK that supports it. +- There are many online Fortran compilers. These are websites that offer a basic text editor and allow you to compile and run your code on a remote server. They are particularly useful for quick prototyping and testing. Although we promised neutrality, we recommend that you check out the open-source and free [Compiler Explorer](https://godbolt.org/), an amazing tool with unique features. +- Arguably the most popular text editor, according to recent online surveys, is the Visual Studio Code, developed by Microsoft. +- The most popular free IDEs are the Code::Blocks and Geany. Many commercial IDEs give up to 30 days of free trial. Keep in mind that the prices of commercial IDEs may vary, and some may be quite affordable. Finally, if you are a student, an open-source developer, or a …hobbyist _Fortraner_ do not hesitate to contact those companies and request a discount. There have been cases, e.g., in r/fortran, where representatives, from at least one company, have offered discount codes to individuals looking for affordable complete solutions (IDE + compiler). +- Finally, please join us on [Fortran Discourse](https://fortran-lang.discourse.group/) and do not hesitate to post your questions and request for further information. diff --git a/_sources/learn/quickstart/arrays_strings.md.txt b/_sources/learn/quickstart/arrays_strings.md.txt new file mode 100644 index 000000000000..bfa6b52ba65a --- /dev/null +++ b/_sources/learn/quickstart/arrays_strings.md.txt @@ -0,0 +1,181 @@ +# Arrays and strings + +More often than not, we need to store and operate on long lists of numbers as opposed to just the single scalar variables +that we have been using so far; in computer programming such lists are called _arrays_. + +Arrays are _multidimensional_ variables that contain more than one value +where each value is accessed using one or more indices. + +> Arrays in Fortran are _one-based_ by default; this means +> that the first element along any dimension is at index 1. + +# Array declaration + +We can declare arrays of any type. There are two common notations for declaring array variables: +using the `dimension` attribute or by appending the array dimensions in parentheses to the variable name. + +**Example:** static array declaration + +```fortran +program arrays + implicit none + + ! 1D integer array + integer, dimension(10) :: array1 + + ! An equivalent array declaration + integer :: array2(10) + + ! 2D real array + real, dimension(10, 10) :: array3 + + ! Custom lower and upper index bounds + real :: array4(0:9) + real :: array5(-5:5) + +end program arrays +``` + +## Array slicing + +A powerful feature of the Fortran language is its built-in support for array operations; +we can perform operations on all or part of an array using array _slicing_ notation: + +**Example:** array slicing + +```fortran +program array_slice + implicit none + + integer :: i + integer :: array1(10) ! 1D integer array of 10 elements + integer :: array2(10, 10) ! 2D integer array of 100 elements + + array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ! Array constructor + array1 = [(i, i = 1, 10)] ! Implied do loop constructor + array1(:) = 0 ! Set all elements to zero + array1(1:5) = 1 ! Set first five elements to one + array1(6:) = 1 ! Set all elements after five to one + + print *, array1(1:10:2) ! Print out elements at odd indices + print *, array2(:,1) ! Print out the first column in a 2D array + print *, array1(10:1:-1) ! Print an array in reverse + +end program array_slice +``` + +> Fortran arrays are stored in _column-major_ order; the first +> index varies fastest. + +## Allocatable (dynamic) arrays + +So far we have specified the size of our array in our program code---this +type of array is known as a _static_ array since its size is fixed when +we compile our program. + +Quite often, we do not know how big our array needs to be until we run our program, for example, if we are reading data from a file of unknown size. + +For this problem, we need `allocatable` arrays. +These are _allocated_ while the program is running once we know how big the array needs to be. + +**Example:** allocatable arrays + +```fortran +program allocatable + implicit none + + integer, allocatable :: array1(:) + integer, allocatable :: array2(:,:) + + allocate(array1(10)) + allocate(array2(10,10)) + + ! ... + + deallocate(array1) + deallocate(array2) + +end program allocatable +``` + +Allocatable local arrays are deallocated automatically +when they go out of scope. + +## Character strings + +**Example:** static character string + +```fortran +program string + implicit none + + character(len=4) :: first_name + character(len=5) :: last_name + character(10) :: full_name + + first_name = 'John' + last_name = 'Smith' + + ! String concatenation + full_name = first_name//' '//last_name + + print *, full_name + +end program string +``` + +**Example:** allocatable character string + +```fortran +program allocatable_string + implicit none + + character(:), allocatable :: first_name + character(:), allocatable :: last_name + + ! Explicit allocation statement + allocate(character(4) :: first_name) + first_name = 'John' + + ! Allocation on assignment + last_name = 'Smith' + + print *, first_name//' '//last_name + +end program allocatable_string +``` + +## Array of strings + +An array of strings can be expressed in Fortran as an array of `character` variables. +All elements in a `character` array have equal length. +However, strings of varying lengths can be provided as input to the array constructor, as shown in the example below. +They will be truncated or right-padded with spaces if they are longer or shorter, respectively, than the declared length of the `character` array. +Finally, we use the intrinsic function `trim` to remove any excess spaces when printing the values to the standard output. + +**Example:** string array + +```fortran +program string_array + implicit none + character(len=10), dimension(2) :: keys, vals + + keys = [character(len=10) :: "user", "dbname"] + vals = [character(len=10) :: "ben", "motivation"] + + call show(keys, vals) + + contains + + subroutine show(akeys, avals) + character(len=*), intent(in) :: akeys(:), avals(:) + integer :: i + + do i = 1, size(akeys) + print *, trim(akeys(i)), ": ", trim(avals(i)) + end do + + end subroutine show + +end program string_array +``` diff --git a/_sources/learn/quickstart/derived_types.md.txt b/_sources/learn/quickstart/derived_types.md.txt new file mode 100644 index 000000000000..aa94943ddc82 --- /dev/null +++ b/_sources/learn/quickstart/derived_types.md.txt @@ -0,0 +1,331 @@ +# Derived Types + +As discussed previously in [Variables](variables), there are five built-in data types in Fortran. A _derived type_ is a special form of data type that can encapsulate other built-in types as well as other derived types. It could be considered equivalent to _struct_ in the C and C++ programming languages. + +## A quick take on derived types + +Here's an example of a basic derived type: + +```fortran +type :: t_pair + integer :: i + real :: x +end type +``` + +The syntax to create a variable of type `t_pair` and access its members is: + +```fortran +! Declare +type(t_pair) :: pair +! Initialize +pair%i = 1 +pair%x = 0.5 +``` + +> The percentage symbol `%` is used to access the members of a derived type. + +In the above snippet, we declared an instance of a derived type and initialized its members explicitly. +You can also initialize derived type members by invoking the derived type constructor. + +Example using the derived type constructor: + +```fortran +pair = t_pair(1, 0.5) ! Initialize with positional arguments +pair = t_pair(i=1, x=0.5) ! Initialize with keyword arguments +pair = t_pair(x=0.5, i=1) ! Keyword arguments can go in any order +``` + +Example with default initialization: + +```fortran +type :: t_pair + integer :: i = 1 + real :: x = 0.5 +end type + +type(t_pair) :: pair +pair = t_pair() ! pair%i is 1, pair%x is 0.5 +pair = t_pair(i=2) ! pair%i is 2, pair%x is 0.5 +pair = t_pair(x=2.7) ! pair%i is 1, pair%x is 2.7 +``` + +## Derived types in detail + +The full syntax of a derived type with all optional properties is presented below: + +``` +type [,attribute-list] :: name [(parameterized-declaration-list)] + [parameterized-definition-statements] + [private statement or sequence statement] + [member-variables] +contains + [type-bound-procedures] +end type +``` + +## Options to declare a derived type + +`attribute-list` may refer to the following: + +- _access-type_ that is either `public` or `private` +- `bind(c)` offers interoperability with C programming language +- `extends(`_parent_`)`, where _parent_ is the name of a previously declared derived type from which the current derived type will inherit all its members and functionality +- `abstract` -- an object oriented feature that is covered in the advanced programming tutorial + +> If the attribute `bind(c)` or the statement `sequence` is used, then a derived type cannot have the attribute `extends` and vice versa. + +The `sequence` attribute may be used only to declare that the following members should be accessed in the same order as they are defined within the derived type. + +Example with `sequence`: + +```fortran +type :: t_pair + sequence + integer :: i + real :: x +end type +! Initialize +type(t_pair) :: pair +pair = t_pair(1, 0.5) +``` + +> The use of the statement `sequence` presupposes that the data types defined below are neither of `allocatable` nor of `pointer` type. Furthermore, it does not imply that these data types will be stored in memory in any particular form, i.e., there is no relation to the `contiguous` attribute. + +The _access-type_ attributes `public` and `private`, if used, declare that all member-variables declared below will be automatically assigned the attribute accordingly. + +The attribute `bind(c)` is used to achieve compatibility between Fortran's derived type and C's struct. + +Example with `bind(c)`: + +```fortran +module f_to_c + use iso_c_bindings, only: c_int + implicit none + + type, bind(c) :: f_type + integer(c_int) :: i + end type + +end module f_to_c +``` + +matches the following C struct type: + +```c +struct c_struct { + int i; +}; +``` + +> A fortran derived type with the attribute `bind(c)` cannot have the `sequence` and `extends` attributes. Furthermore it cannot contain any Fortran `pointer` or `allocatable` types. + +`parameterized-declaration-list` is an optional feature. If used, then the parameters must be listed in place of `[parameterized-definition-statements]` and must be either `len` or `kind` parameters or both. + +Example of a derived type with `parameterized-declaration-list` and with the attribute `public`: + +```fortran +module m_matrix + implicit none + private + + type, public :: t_matrix(rows, cols, k) + integer, len :: rows, cols + integer, kind :: k = kind(0.0) + real(kind=k), dimension(rows, cols) :: values + end type + +end module m_matrix + +program test_matrix + use m_matrix + implicit none + + type(t_matrix(rows=5, cols=5)) :: m + +end program test_matrix +``` + +> In this example the parameter `k` has already been assigned a default value of `kind(0.0)` (single-precision floating-point). Therefore, it can be omitted, as is the case here in the declaration inside the main program. + +> By default, derived types and their members are public. However, in this example, the attribute `private` is used at the beginning of the module. Therefore, everything within the module will be by default `private` unless explicitly declared as `public`. If the type `t_matrix` was not given the attribute `public` in the above example, then the compiler would throw an error inside `program test`. + +The attribute `extends` was added in the F2003 standard and introduces an important feature of the object oriented paradigm (OOP), namely inheritance. It allows code reusability by letting child types derive from extensible parent types: `type, extends(parent) :: child`. Here, `child` inherits all the members and functionality from `type :: parent`. + +Example with the attribute `extends`: + +```fortran +module m_employee + implicit none + private + public t_date, t_address, t_person, t_employee + ! Note another way of using the public attribute: + ! gathering all public data types in one place. + + type :: t_date + integer :: year, month, day + end type + + type :: t_address + character(len=:), allocatable :: city, road_name + integer :: house_number + end type + + type, extends(t_address) :: t_person + character(len=:), allocatable :: first_name, last_name, e_mail + end type + + type, extends(t_person) :: t_employee + type(t_date) :: hired_date + character(len=:), allocatable :: position + real :: monthly_salary + end type + +end module m_employee + +program test_employee + use m_employee + implicit none + type(t_employee) :: employee + + ! Initialization + + ! t_employee has access to type(t_date) members not because of extends + ! but because a type(t_date) was declared within t_employee. + employee%hired_date%year = 2020 + employee%hired_date%month = 1 + employee%hired_date%day = 20 + + ! t_employee has access to t_person, and inherits its members due to extends. + employee%first_name = 'John' + employee%last_name = 'Doe' + + ! t_employee has access to t_address, because it inherits from t_person, + ! which in return inherits from t_address. + employee%city = 'London' + employee%road_name = 'BigBen' + employee%house_number = 1 + + ! t_employee has access to its defined members. + employee%position = 'Intern' + employee%monthly_salary = 0.0 + +end program test_employee +``` + +## Options to declare members of a derived type + +`[member-variables]` refers to the declaration of all the member data types. These data types can be of any built-in data type, and/or of other derived types, as already showcased in the above examples. However, member-variables can have their own extensive syntax, in form of: +`type [,member-attributes] :: name[attr-dependent-spec][init]` + +`type`: any built-in type or other derived type + +`member-attributes` (optional): + +- `public` or `private` access attributes +- `protected` access attribute +- `allocatable` with or without `dimension` to specify a dynamic array +- `pointer`, `codimension`, `contiguous`, `volatile`, `asynchronous` + +Examples of common cases: + +```fortran +type :: t_example + ! 1st case: simple built-in type with access attribute and [init] + integer, private :: i = 0 + ! private hides it from use outside of the t_example's scope. + ! The default initialization [=0] is the [init] part. + + ! 2nd case: protected + integer, protected :: i + ! In contrary to private, protected allows access to i assigned value outside of t_example + ! but is not definable, i.e. a value may be assigned to i only within t_example. + + ! 3rd case: dynamic 1-D array + real, allocatable, dimension(:) :: x + ! the same as + real, allocatable :: x(:) + ! This parentheses' usage implies dimension(:) and is one of the possible [attr-dependent-spec]. +end type +``` + +> The following attributes: `pointer`, `codimension`, `contiguous`, `volatile`, `asynchronous` are advanced features that will not be addressed in the _Quickstart_ tutorial. However, they are presented here, in order for the readers to know that these features do exist and be able to recognize them. These features will be covered in detail in the upcoming _Advanced programing_ mini-book. + +## Type-bound procedures + +A derived type can contain functions or subroutines that are _bound_ to it. We'll refer to them as _type-bound procedures_. Type-bound procedures follow the `contains` statement that, in turn, follows all member variable declarations. + +> It is impossible to describe type-bound procedures in full without delving into OOP features of modern Fortran. For now we'll focus on a simple example to show their basic use. + +Here's an example of a derived type with a basic type-bound procedure: + +```fortran +module m_shapes + implicit none + private + public t_square + + type :: t_square + real :: side + contains + procedure :: area ! procedure declaration + end type + +contains + + ! Procedure definition + real function area(self) result(res) + class(t_square), intent(in) :: self + res = self%side**2 + end function + +end module m_shapes + +program main + use m_shapes + implicit none + + ! Variables' declaration + type(t_square) :: sq + real :: x, side + + ! Variables' initialization + side = 0.5 + sq%side = side + + x = sq%area() + ! self does not appear here, it has been passed implicitly + + ! Do stuff with x... + +end program main +``` + +What is new: + +- `self` is an arbitrary name that we chose to represent the instance of the derived type `t_square` inside the type-bound function. This allows us to access its members and to automatically pass it as an argument when we invoke a type-bound procedure. +- We now use `class(t_square)` instead of `type(t_square)` in the interface of the `area` function. This allows us to invoke the `area` function with any derived type that extends `t_square`. The keyword `class` introduces the OOP feature polymorphism. + +In the above example, the type-bound procedure `area` is defined as a function and can be invoked only in an expression, for example `x = sq%area()` or `print *, sq%area()`. If you define it instead as a subroutine, you can invoke it from its own `call` statement: + +```fortran +! Change within module +contains + subroutine area(self, x) + class(t_square), intent(in) :: self + real, intent(out) :: x + x = self%side**2 + end subroutine + +! ... + +! Change within main program +call sq%area(x) + +! Do stuff with x... +``` + +In contrast to the example with the type-bound function, we now have two arguments: + +- `class(t_square), intent(in) :: self` -- the instance of the derived type itself +- `real, intent(out) :: x` -- used to store the calculated area and return to the caller diff --git a/_sources/learn/quickstart/hello_world.md.txt b/_sources/learn/quickstart/hello_world.md.txt new file mode 100644 index 000000000000..a5d891a1aa21 --- /dev/null +++ b/_sources/learn/quickstart/hello_world.md.txt @@ -0,0 +1,66 @@ +# Hello world + +In this part of the tutorial, we will write our first Fortran program: +the ubiquitous ["Hello, World!"](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) example. + +However, before we can write our program, we need to ensure that we have +a Fortran compiler set up. + +> Fortran is a _compiled language_, which means that, once written, the source code must be passed through a +> compiler to produce a machine executable that can be run. + +# Compiler setup + +In this tutorial, we'll work with the free and open source +[GNU Fortran compiler (gfortran)](https://gcc.gnu.org/fortran/), +which is part of the +[GNU Compiler Collection (GCC)](https://gcc.gnu.org/). + +To install gfortran on Linux, use your system package manager. +On macOS, you can install gfortran using [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/). +On Windows, you can get native binaries [here](http://www.equation.com/servlet/equation.cmd?fa=fortran). + +To check if you have _gfortran_ setup correctly, open a terminal and run the following command: + +```shell +$> gfortran --version +``` + +this should output something like: + +``` +GNU Fortran 7.5.0 +Copyright (C) 2017 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +## Hello world + +Once you have set up your compiler, open a new file in your favourite code editor and enter the following: + +```fortran +program hello + ! This is a comment line; it is ignored by the compiler + print *, 'Hello, World!' +end program hello +``` + +Having saved your program to `hello.f90`, compile at the command line with: + +```shell +$> gfortran hello.f90 -o hello +``` + +> `.f90` is the standard file extension for modern Fortran source files. +> The 90 refers to the first modern Fortran standard in 1990. + +To run your compiled program: + +```shell +$> ./hello +Hello, World! +``` + +Congratulations, you've written, compiled and run your first Fortran program! +In the next part of this tutorial, we will introduce variables for storing data. diff --git a/_sources/learn/quickstart/index.md.txt b/_sources/learn/quickstart/index.md.txt new file mode 100644 index 000000000000..6cefd11f1d96 --- /dev/null +++ b/_sources/learn/quickstart/index.md.txt @@ -0,0 +1,20 @@ +# Quickstart tutorial + +This quickstart tutorial gives an overview of the Fortran programming language +and its syntax for common structured programming concepts including: +types, variables, arrays, control flow and functions. + +The contents of this tutorial are shown in the navigation bar on the left with the current page highlighted bold. + +Use the _Next_ button at the bottom to start the tutorial with a _Hello World_ example. + +```{toctree} +:maxdepth: 2 +:hidden: +Hello world +Variables +Arrays and strings +Operators and flow control +Organising code structure +Derived Types +``` diff --git a/_sources/learn/quickstart/operators_control_flow.md.txt b/_sources/learn/quickstart/operators_control_flow.md.txt new file mode 100644 index 000000000000..a1618d968305 --- /dev/null +++ b/_sources/learn/quickstart/operators_control_flow.md.txt @@ -0,0 +1,231 @@ +# Operators and flow control + +One of the powerful advantages of computer algorithms, compared to simple mathematical formulae, +comes in the form of program _branching_ whereby the program can decide which instructions to +execute next based on a logical condition. + +There are two main forms of controlling program flow: + +- _Conditional_ (if): choose program path based on a boolean (true or false) value + +- _Loop_: repeat a portion of code multiple times + +# Logical operators + +Before we use a conditional branching operator, we need to be able to form +a logical expression. + +To form a logical expression, the following set of relational operators are available: + +| Operator   | Alternative   | Description | +| :-------------: | :----------------: | --------------------------------------------------------------- | +| `==` | `.eq.` | Tests for equality of two operands | +| `/=` | `.ne.` | Test for inequality of two operands | +| `> ` | `.gt.` | Tests if left operand is strictly greater than right operand | +| `< ` | `.lt.` | Tests if left operand is strictly less than right operand | +| `>=` | `.ge.` | Tests if left operand is greater than or equal to right operand | +| `<=` | `.le.` | Tests if left operand is less than or equal to right operand | + +
+ +as well as the following logical operators: + +| Operator   | Description | +| :-------------: | -------------------------------------------------------------------- | +| `.and.` | TRUE if both left and right operands are TRUE | +| `.or.` | TRUE if either left or right or both operands are TRUE | +| `.not.` | TRUE if right operand is FALSE | +| `.eqv.` | TRUE if left operand has same logical value as right operand | +| `.neqv.` | TRUE if left operand has the opposite logical value as right operand | + +
+ +## Conditional construct (`if`) + +In the following examples, a conditional `if` construct is used to print out a +message to describe the nature of the `angle` variable: + +**Example:** single branch `if` + +```fortran +if (angle < 90.0) then + print *, 'Angle is acute' +end if +``` + +In this first example, the code within the `if` construct is _only executed if_ the +test expression (`angle < 90.0`) is true. + +::::{tip} +It is good practice to indent code within constructs such as `if` and `do` +to make code more readable. +:::: + +We can add an alternative branch to the construct using the `else` keyword: + +**Example:** two-branch `if`-`else` + +```fortran +if (angle < 90.0) then + print *, 'Angle is acute' +else + print *, 'Angle is obtuse' +end if +``` + +Now there are two _branches_ in the `if` construct, but _only one branch is executed_ depending +on the logical expression following the `if` keyword. + +We can actually add any number of branches using `else if` to specify more conditions: + +**Example:** multi-branch `if`-`else if`-`else` + +```fortran +if (angle < 90.0) then + print *, 'Angle is acute' +else if (angle < 180.0) then + print *, 'Angle is obtuse' +else + print *, 'Angle is reflex' +end if +``` + +When multiple conditional expressions are used, each conditional expression is tested only if none of the previous +expressions have evaluated to true. + +## Loop constructs (`do`) + +In the following example, a `do` loop construct is used to print out the numbers in +a sequence. +The `do` loop has an integer _counter_ variable which is used to track which iteration of the loop +is currently executing. In this example we use a common name for this counter variable: `i`. + +When we define the start of the `do` loop, we use our counter variable name followed by an equals (`=`) sign +to specify the start value and final value of our counting variable. + +**Example:** `do` loop + +```fortran +integer :: i + +do i = 1, 10 + print *, i +end do +``` + +**Example:** `do` loop with skip + +```fortran +integer :: i + +do i = 1, 10, 2 + print *, i ! Print odd numbers +end do +``` + +### Conditional loop (`do while`) + +A condition may be added to a `do` loop with the `while` keyword. The loop will be executed while the condition given +in `while()` evaluates to `.true.`. + +**Example:** `do while()` loop + +```fortran +integer :: i + +i = 1 +do while (i < 11) + print *, i + i = i + 1 +end do +! Here i = 11 +``` + +### Loop control statements (`exit` and `cycle`) + +Most often than not, loops need to be stopped if a condition is met. Fortran provides two executable statements to deal +with such cases. + +`exit` is used to quit the loop prematurely. It is usually enclosed inside an `if`. + +**Example:** loop with `exit` + +```fortran +integer :: i + +do i = 1, 100 + if (i > 10) then + exit ! Stop printing numbers + end if + print *, i +end do +! Here i = 11 +``` + +On the other hand, `cycle` skips whatever is left of the loop and goes into the next cycle. + +**Example:** loop with `cycle` + +```fortran +integer :: i + +do i = 1, 10 + if (mod(i, 2) == 0) then + cycle ! Don't print even numbers + end if + print *, i +end do +``` + +::::{note} +When used within nested loops, the `cycle` and `exit` statements operate on the innermost loop. +:::: + +### Nested loop control: tags + +A recurring case in any programming language is the use of nested loops. Nested loops refer to loops that exist within another loop. Fortran allows the programmer to _tag_ or _name_ each loop. If loops are tagged, there are two potential benefits: + +1. The readability of the code may be improved (when the naming is meaningful). +2. `exit` and `cycle` may be used with tags, which allows for very fine-grained control of the loops. + +**Example:** tagged nested loops + +```fortran +integer :: i, j + +outer_loop: do i = 1, 10 + inner_loop: do j = 1, 10 + if ((j + i) > 10) then ! Print only pairs of i and j that add up to 10 + cycle outer_loop ! Go to the next iteration of the outer loop + end if + print *, 'I=', i, ' J=', j, ' Sum=', j + i + end do inner_loop +end do outer_loop +``` + +### Parallelizable loop (`do concurrent`) + +The `do concurrent` loop is used to explicitly specify that the _inside of the loop has no interdependencies_; this informs the compiler that it may use parallelization/_SIMD_ to speed up execution of the loop and conveys programmer intention more clearly. More specifically, this means +that any given loop iteration does not depend on the prior execution of other loop iterations. It is also necessary that any state changes that may occur must only happen within each `do concurrent` loop. +These requirements place restrictions on what can be placed within the loop body. + +> Simply replacing a `do` loop with a `do concurrent` does not guarantee parallel execution. +> The explanation given above does not detail all the requirements that need to be met in order to write a correct `do concurrent` loop. +> Compilers are also free to do as they see fit, meaning they may not optimize the loop (e.g., a small number of iterations doing a simple calculation, like the +> below example). +> In general, compiler flags are required to activate possible parallelization for `do concurrent` loops. + +**Example:** `do concurrent()` loop + +```fortran +real, parameter :: pi = 3.14159265 +integer, parameter :: n = 10 +real :: result_sin(n) +integer :: i + +do concurrent (i = 1:n) ! Careful, the syntax is slightly different + result_sin(i) = sin(i * pi/4.) +end do + +print *, result_sin +``` diff --git a/_sources/learn/quickstart/organising_code.md.txt b/_sources/learn/quickstart/organising_code.md.txt new file mode 100644 index 000000000000..3e2d8b31bf83 --- /dev/null +++ b/_sources/learn/quickstart/organising_code.md.txt @@ -0,0 +1,173 @@ +# Organising code structure + +Most programming languages allow you to collect commonly-used code into +_procedures_ that can be reused by _calling_ them from other sections of code. + +Fortran has two forms of procedure: + +- **Subroutine**: invoked by a `call` statement +- **Function**: invoked within an expression or assignment to which it returns a value + +Both subroutines and functions have access to variables in the parent scope by _argument association_; +unless the `value` attribute is specified, this is similar to call by reference. + +# Subroutines + +The subroutine input arguments, known as _dummy arguments_, are specified in parentheses after the subroutine name; +the dummy argument types and attributes are declared within the body of the subroutine just like local variables. + +**Example:** + +```fortran +! Print matrix A to screen +subroutine print_matrix(n,m,A) + implicit none + integer, intent(in) :: n + integer, intent(in) :: m + real, intent(in) :: A(n, m) + + integer :: i + + do i = 1, n + print *, A(i, 1:m) + end do + +end subroutine print_matrix +``` + +Note the additional `intent` attribute when declaring the dummy arguments; this optional attribute signifies to the compiler whether the argument +is ''read-only'' (`intent(in)`) ''write-only'' (`intent(out)`) or ''read-write'' (`intent(inout)`) within the procedure. +In this example, the subroutine does not modify its arguments, hence all arguments are `intent(in)`. + +> It is good practice to always specify the `intent` attribute for +> dummy arguments; this allows the compiler to check for unintentional errors and provides self-documentation. + +We can call this subroutine from a program using a `call` statement: + +```fortran +program call_sub + implicit none + + real :: mat(10, 20) + + mat(:,:) = 0.0 + + call print_matrix(10, 20, mat) + +end program call_sub +``` + +> This example uses a so-called _explicit-shape_ array argument since we have passed additional variables to describe +> the dimensions of the array `A`; this will not be necessary if we place our subroutine in a module as described later. + +## Functions + +```fortran +! L2 Norm of a vector +function vector_norm(n,vec) result(norm) + implicit none + integer, intent(in) :: n + real, intent(in) :: vec(n) + real :: norm + + norm = sqrt(sum(vec**2)) + +end function vector_norm +``` + +> In production code, the intrinsic function `norm2` should be used. + +To execute this function: + +```fortran +program run_fcn + implicit none + + real :: v(9) + real :: vector_norm + + v(:) = 9 + + print *, 'Vector norm = ', vector_norm(9,v) + +end program run_fcn +``` + +> It is good programming practice for functions not to modify their arguments---that is, all function arguments should be `intent(in)`. +> Such functions are known as `pure` functions. +> Use subroutines if your procedure needs to modify its arguments. + +## Modules + +Fortran modules contain definitions that are made accessible to programs, procedures, and other modules through the `use` statement. +They can contain data objects, type definitions, procedures, and interfaces. + +- Modules allow controlled scoping extension whereby entity access is made explicit +- Modules automatically generate explicit interfaces required for modern procedures + +> It is recommended to always place functions and subroutines +> within modules. + +**Example:** + +```fortran +module my_mod + implicit none + + private ! All entities are now module-private by default + public public_var, print_matrix ! Explicitly export public entities + + real, parameter :: public_var = 2 + integer :: private_var + +contains + + ! Print matrix A to screen + subroutine print_matrix(A) + real, intent(in) :: A(:,:) ! An assumed-shape dummy argument + + integer :: i + + do i = 1, size(A,1) + print *, A(i,:) + end do + + end subroutine print_matrix + +end module my_mod +``` + +> Compare this `print_matrix` subroutine with that written outside of a module +> we no longer have to explicitly pass the matrix dimensions and can instead take +> advantage of _assumed-shape_ arguments since the module will generate the required +> explicit interface for us. This results in a much simpler subroutine interface. + +To `use` the module within a program: + +```fortran +program use_mod + use my_mod + implicit none + + real :: mat(10, 10) + + mat(:,:) = public_var + + call print_matrix(mat) + +end program use_mod +``` + +**Example:** explicit import list + +```fortran +use my_mod, only: public_var +``` + +**Example:** aliased import + +```fortran +use my_mod, only: printMat=>print_matrix +``` + +> Each module should be written in a separate `.f90` source file. Modules need to be compiled prior to any program units that `use` them. diff --git a/_sources/learn/quickstart/variables.md.txt b/_sources/learn/quickstart/variables.md.txt new file mode 100644 index 000000000000..8197915d8dba --- /dev/null +++ b/_sources/learn/quickstart/variables.md.txt @@ -0,0 +1,196 @@ +# Variables + +Variables store information that can be manipulated by the program. +Fortran is a _strongly typed_ language, which means that each variable +must have a type. + +There are 5 built-in data types in Fortran: + +- `integer` -- for data that represent whole numbers, positive or negative +- `real` -- for floating-point data (not a whole number) +- `complex` -- pair consisting of a real part and an imaginary part +- `character` -- for text data +- `logical` -- for data that represent boolean (true or false) values + +Before we can use a variable, we must _declare_ it; this tells the compiler +the variable type and any other variable attributes. + +> Fortran is a _statically typed_ language, which means the type of each +> variable is fixed when the program is compiled---variable types cannot change while the program is running. + +# Declaring variables + +The syntax for declaring variables is: + +``` + :: +``` + +where `` is one of the built-in variable types listed above and +`` is the name that you would like to call your variable. + +Variable names must start with a letter and can consist of letters, numbers and underscores. +In the following example we declare a variable for each of the built-in types. + +**Example:** variable declaration + +```fortran +program variables + implicit none + + integer :: amount + real :: pi + complex :: frequency + character :: initial + logical :: isOkay + +end program variables +``` + +> Fortran code is **case-insensitive**; you don't have to worry about the +> capitalisation of your variable names, but it's good practice to keep it consistent. + +Note the additional statement at the beginning of the program: `implicit none`. +This statement tells the compiler that all variables will be explicitly declared; without +this statement variables will be implicitly typed according to the letter they begin with. + +> Always use the `implicit none` statement at +> the beginning of each program and procedure. Implicit typing is considered bad practice in +> modern programming since it hides information leading to more program errors. + +Once we have declared a variable, we can assign and reassign values to it using the assignment operator `=`. + +**Example:** variable assignment + +```fortran +amount = 10 +pi = 3.1415927 +frequency = (1.0, -0.5) +initial = 'A' +isOkay = .false. +``` + +Characters are surrounded by either single (`'`) or double quotes (`"`). + +Logical or boolean values can be either `.true.` or `.false.`. + +> Watch out" content="for assignment at declaration: `integer :: amount = 1`. +> **This is NOT a normal initialisation;** it implies the `save` attribute which means that the variable retains +> its value between procedure calls. Good practice is to initialise your variables separately to their declaration. + +## Standard input / output + +In our _Hello World_ example, we printed text to the command window. +This is commonly referred to as writing to `standard output` or `stdout`. + +We can use the `print` statement introduced earlier to print variable values to `stdout`: + +```fortran +print *, 'The value of amount (integer) is: ', amount +print *, 'The value of pi (real) is: ', pi +print *, 'The value of frequency (complex) is: ', frequency +print *, 'The value of initial (character) is: ', initial +print *, 'The value of isOkay (logical) is: ', isOkay +``` + +In a similar way, we can read values from the command window +using the `read` statement: + +```fortran +program read_value + implicit none + integer :: age + + print *, 'Please enter your age: ' + read(*,*) age + + print *, 'Your age is: ', age + +end program read_value +``` + +This input source is commonly referred to as `standard input` or `stdin`. + +## Expressions + +The usual set of arithmetic operators are available, listed in order of precedence: + +| Operator   | Description | +| :-------------: | -------------- | +| `**` | Exponent | +| `*` | Multiplication | +| `/ ` | Division | +| `+` | Addition | +| `-` | Subtraction | + +
+ +**Example:** + +```fortran +program arithmetic + implicit none + + real :: pi + real :: radius + real :: height + real :: area + real :: volume + + pi = 3.1415927 + + print *, 'Enter cylinder base radius:' + read(*,*) radius + + print *, 'Enter cylinder height:' + read(*,*) height + + area = pi * radius**2 + volume = area * height + + print *, 'Cylinder radius is: ', radius + print *, 'Cylinder height is: ', height + print *, 'Cylinder base area is: ', area + print *, 'Cylinder volume is: ', volume + +end program arithmetic +``` + +## Floating-point precision + +The desired floating-point precision can be explicitly declared using a `kind` parameter. +The `iso_fortran_env` intrinsic module provides `kind` parameters for the common 32-bit and 64-bit floating-point types. + +**Example:** explicit real `kind` + +```fortran +program float + use, intrinsic :: iso_fortran_env, only: sp=>real32, dp=>real64 + implicit none + + real(sp) :: float32 + real(dp) :: float64 + + float32 = 1.0_sp ! Explicit suffix for literal constants + float64 = 1.0_dp + +end program float +``` + +> Always use a `kind` suffix for floating-point literal constants. + +**Example:** C-interoperable `kind` + +```fortran +program float + use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double + implicit none + + real(sp) :: float32 + real(dp) :: float64 + +end program float +``` + +In the next part we will learn how to use arrays for storing more than one +value in a variable. diff --git a/_sources/news.md.txt b/_sources/news.md.txt new file mode 100644 index 000000000000..85c63e760252 --- /dev/null +++ b/_sources/news.md.txt @@ -0,0 +1 @@ +## News diff --git a/_sources/news/2020/02-28-J3-february-meeting.md.txt b/_sources/news/2020/02-28-J3-february-meeting.md.txt new file mode 100644 index 000000000000..5b30bb22768c --- /dev/null +++ b/_sources/news/2020/02-28-J3-february-meeting.md.txt @@ -0,0 +1,93 @@ +--- +date: 2020-02-28 +category: newsletter +author: Ondřej Čertík and Zach Jibben +... + +# J3 February 2020 Meeting + +The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020. + +## Attendance + +The following people / companies attended: + +Voting members: + +1. Intel: Jon Steidel +2. HPE/Cray: Bill Long +3. NVIDIA: Peter Klausler, Gary Klimowicz +4. IBM: Daniel Chen +5. ARM: Srinath Vadlamani +6. NCAR: Dan Nagle, Magne Haveraaen +7. NASA: Tom Clune +8. JPL: Van Sneider +9. LANL: Zach Jibben, Ondřej Čertík +10. ORNL: Reuben Budiardja +11. LBNL: Brian Friesen +12. Sandia: Damian Rouson +13. Lionel: Steven Lionel, Malcolm Cohen, Vipul Parekh +14. Corbett: Bob Corbett + +Others: + +15. AMD: Richard Bleikamp +16. WG23: Stephen Michell (convenor), Erhard Ploedereder (member) +17. Structural Integrity: Brad Richardson + +## Proposals Discussed at Plenary + +### Monday 2/24 + +### Tuesday 2/25 + +- [#22] : Default values of optional arguments () + +### Wednesday 2/26 + +- [#157] : Rank-agnostic array element and section denotation (, ) +- [#158] : TYPEOF and CLASSOF () +- [#1] : Namespace for modules () +- Interpretation: FORM TEAM and failed images () +- Interpretation: Collective subroutines and STAT= () + +### Thursday 2/27 + +- Interpretation: events that cause variables to become undefined () +- Edits for SIMPLE procedures () +- BFLOAT16 () +- [#146] : Interpretation: allocatable component finalization () + +### Friday 2/28 + +- [#157] : Rank-agnostic syntax (). Passed unanimously with minor changes. +- [#156] : Protected components (). Withdrawn to address conflicting interests. +- [#160] : Edits for auto-allocate characters (). Passed unanimously with minor changes. +- Edits for procedure pointer association (). Passed unanimously. +- [#157] : Edits for rank-agnostic bounds (). Withdrawn because some edits were missing and need to be added. There were concerns about fitting into the framework of generics later on. +- [#157] : Edits for rank-agnostic array element and section denotation (). Failed (5 v 7). Missing edits, and disagreement on types vs rank-1 integers, the options need to be explored more. +- [#157] : Edits for rank-agnostic allocation and pointer assignment (). Passed unanimously with minor changes. +- Interpretation: Public namelist and private variable (). Straw vote (0 yes, 8 no, 9 undecided). Passed unanimously with "no" alternative. +- Interpretation F18/015 (). Passed unanimously. + +## Skipped + +This was on the plan but we did not get to it: + +- [#5] : US 27 POINTER dummy arguments, INTENT, and target modification () +- [#19] : Short-circuiting proposal + +## More Details + +More details available at +[j3-fortran/fortran_proposals #155](https://github.com/j3-fortran/fortran_proposals/issues/155) and at the official [minutes](https://j3-fortran.org/doc/year/20/minutes221.txt) from the meeting. + +[#1]: https://github.com/j3-fortran/fortran_proposals/issues/1 +[#5]: https://github.com/j3-fortran/fortran_proposals/issues/5 +[#19]: https://github.com/j3-fortran/fortran_proposals/issues/19 +[#22]: https://github.com/j3-fortran/fortran_proposals/issues/22 +[#146]: https://github.com/j3-fortran/fortran_proposals/issues/146 +[#156]: https://github.com/j3-fortran/fortran_proposals/issues/156 +[#157]: https://github.com/j3-fortran/fortran_proposals/issues/157 +[#158]: https://github.com/j3-fortran/fortran_proposals/issues/158 +[#160]: https://github.com/j3-fortran/fortran_proposals/issues/160 diff --git a/_sources/news/2020/04-06-Announcing-FortranCon-2020.md.txt b/_sources/news/2020/04-06-Announcing-FortranCon-2020.md.txt new file mode 100644 index 000000000000..f737cc8fd402 --- /dev/null +++ b/_sources/news/2020/04-06-Announcing-FortranCon-2020.md.txt @@ -0,0 +1,31 @@ +--- +layout: post +date: 2020-04-06 +category: newsletter +... + +# FortranCon 2020 + +FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland. + + + +FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click [here](https://tcevents.chem.uzh.ch/event/12/abstracts/) to submit +an abstract. + +The keynote presentation will be delivered by Steve Lionel +([@doctorfortran](https://twitter.com/doctorfortran)), convener of the +US Fortran Standards Committee. + +The [registration](https://tcevents.chem.uzh.ch/event/12/registrations/) +is **free of charge**, with June 1, 2020 as the deadline. +Virtual participation will be enabled for speakers and attendees unable to +travel. + +Read more about FortranCon 2020 [here](https://tcevents.chem.uzh.ch/event/12/). diff --git a/_sources/news/2020/04-18-Fortran-Webinar.md.txt b/_sources/news/2020/04-18-Fortran-Webinar.md.txt new file mode 100644 index 000000000000..ec9882d22347 --- /dev/null +++ b/_sources/news/2020/04-18-Fortran-Webinar.md.txt @@ -0,0 +1,28 @@ +--- +date: 2020-04-18 +title: Open Source Directions Fortran webinar +category: newsletter +... + +# Open Source Directions Fortran webinar + +Ondřej Čertík ([@ondrejcertik](https://twitter.com/ondrejcertik)) and +Milan Curcic ([@realmilancurcic](https://twitter.com/realmilancurcic)) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it's currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools. + +Watch the episode now: + + + +Special thanks to our hosts Melissa Mendonça +([@melissawm](https://twitter.com/melissawm)) and Madicken Munk +([@munkium](https://twitter.com/munkium)), as well as +[OpenTeams](https://openteams.com) and [QuanSight](https://www.quansight.com/) +for having us. + +You can find all previous episodes of the Open Source Directions webinar +[here](https://www.quansight.com/open-source-directions). diff --git a/_sources/news/2020/05-01-Fortran-Newsletter-May-2020.md.txt b/_sources/news/2020/05-01-Fortran-Newsletter-May-2020.md.txt new file mode 100644 index 000000000000..6aeafc7b88be --- /dev/null +++ b/_sources/news/2020/05-01-Fortran-Newsletter-May-2020.md.txt @@ -0,0 +1,112 @@ +--- +category: newsletter +date: 2020-05-01 +author: Milan Curcic +... + +# Fortran newsletter: May 2020 + +```fortran +print *, 'Hello, World!' +``` + +Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month. + +## This website + +If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be _the_ home of Fortran on the internet, +which traditionally there hasn't been any to date. +Look around and [let us know](https://github.com/fortran-lang/fortran-lang.github.io/issues) +if you have any suggestions for improvement. +Specifically, [Learn](/learn) and [Packages](/packages) are the pages that +we'll be focusing on in the coming months. +Please help us make them better! + +## Standard Library + +Here's what's new in Fortran Standard Library: + +- [#172](https://github.com/fortran-lang/stdlib/pull/172) + New function `cov` in the `stdlib_experimental_stats` module to compute covariance of array elements. + Read the full specification [here](https://github.com/fortran-lang/stdlib/blob/HEAD/src/stdlib_experimental_stats.md#cov---covariance-of-array-elements). + +- [#168](https://github.com/fortran-lang/stdlib/pull/168) + Specify recommended order of attributes for dummy arguments in the + [Stdlib style guide](https://github.com/fortran-lang/stdlib/blob/HEAD/STYLE_GUIDE.md). + +- [#173](https://github.com/fortran-lang/stdlib/pull/173) + Minor bug fix. + +- [#170](https://github.com/fortran-lang/stdlib/pull/170) + WIP: Addition of `diag`, `eye`, and `trace` functions to make working with + matrices easier. + +## Package Manager + +In the past month we've seen the first working implementation of the [Fortran Package Manager (FPM)](https://github.com/fortran-lang/fpm). +Specifically: + +- FPM supports three commands: + - `fpm build`--compiles and links your application and/or library. + - `fpm test`--runs tests if your package has any test programs. + - `fpm run`--runs the application if your package has an executable program. +- FPM can build an executable program, a library, or a combination of both. +- Currently only gfortran is supported as the compiler backend. FPM will suport other compilers soon. + +Read the [FPM packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) +to learn how to build your package with FPM. + +FPM is still in very early development, and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for FPM. +- Improve the documentation. + +The short term goal of FPM is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## WG5 Convenor candidates + +Last month was also the deadline for the [WG5](https://wg5-fortran.org/) +convenor candidates to apply for the next 3-year term (2021-2024). +There are two candidates: + +- [Steve Lionel](https://stevelionel.com), who is also the current WG5 convenor, + announced running for another term. + Read Steve's [post](https://stevelionel.com/drfortran/2020/04/25/doctor-fortran-in-forward) + about how he has guided the standardization process over the past three years and his direction for the future. + +- [Ondřej Čertík](https://ondrejcertik.com) has also announced announced to run + for the WG5 convenor. + Read Ondřej's [announcement](https://ondrejcertik.com/blog/2020/04/running-for-wg5-convenor-announcement/) + and [platform](https://github.com/certik/wg5_platform_2020) + that detail current issues with Fortran language development and how to + overcome them going forward. + +## Events + +- [OpenTeams](https://openteams.com) and [QuanSight](https://quansight.com) hosted Ondřej Čertík and Milan Curcic + in the Episode 40 of the Open Source Directions Webinar. + They talked about the current state and future of Fortran, as well as about building the Fortran community and developer tools. + Read more about it and watch the video [here](/newsletter/2020/04/18/Fortran-Webinar/). +- [FortranCon 2020](https://tcevents.chem.uzh.ch/event/12) will take place on July 2-4 in Zurich, Switzerland. + Virtual participation is enabled for both attendees and speakers. + Registration is free and due by June 1, 2020. +- J3/WG5 joint meeting will take place on October 12-16 in Las Vegas, Nevada. + You can submit a proposal for the Standards committee [here](https://github.com/j3-fortran/fortran_proposals). + For reference, you can read the [notes from the February meeting](/newsletter/2020/02/28/J3-february-meeting). + +## Who's hiring? + +- [Intel Corporation (Santa Clara, CA): Software Engineer, Fortran](https://g.co/kgs/aogdeh) +- [Intel Corporation (Hillsboro, OR): Software Engineer, Fortran](https://g.co/kgs/5X3d2Y) +- [Pozent (York, PA): Fortran Technical Lead](https://g.co/kgs/yuaohU) +- [American Cybersystems, Inc. (Binghamton, NY): Software Engineer (Fortran, C/C++, Ada, C#, Java, Radar)](https://g.co/kgs/VAWjWk) +- [BravoTech (Dallas, TX): C++ / Fortran Developer](https://g.co/kgs/eLsn63) +- [Siemens (Milford, OH): CAE Software Engineer (Fortran or C++) Design and Topology Optimization](https://g.co/kgs/eYftiA) diff --git a/_sources/news/2020/06-01-Fortran-Newsletter-June-2020.md.txt b/_sources/news/2020/06-01-Fortran-Newsletter-June-2020.md.txt new file mode 100644 index 000000000000..b836c6f70ff3 --- /dev/null +++ b/_sources/news/2020/06-01-Fortran-Newsletter-June-2020.md.txt @@ -0,0 +1,129 @@ +--- +category: newsletter +date: 2020-06-01 +author: Jeremie Vandenplas, Brad Richardson, Milan Curcic and Ondřej Čertík +... + +# Fortran newsletter: June 2020 + +Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month. + +## fortran-lang.org + +The Fortran website has been up since mid-April, and we've already got great +feedback from the community. +In the past month we've updated the [Compilers](/compilers) page which is now +comprehensive and includes all major open source and commercial compilers. +The [Learn](/learn) page has also seen significant updates—it's been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources. + +If you haven't yet, please explore the website and [let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for improvement. +Specifically, we'll be focusing on the [Learn](/learn) page and its mini-books +in the coming months. +Please help us make them better! + +Here are some specific items that we worked on: + +- [#90](https://github.com/fortran-lang/fortran-lang.org/pull/90) + WIP: Mini-book on building programs +- [#83](https://github.com/fortran-lang/fortran-lang.org/pull/83) + Improving the structure and navigation of the [Learn](/learn) pages +- [#46](https://github.com/fortran-lang/fortran-lang.org/pull/46) + Build website previews from pull requests + +## Fortran Discourse + +On May 4 we launched the [Fortran Discourse](https://fortran-lang.discourse.group), an online discussion board +for anything and everything Fortran related. +You can use it discuss the Fortran language, ask for help, announce events and/or personal projects, or just lurk +around. +There are already quite a few interesting discussions going on. +Join us! + +## Fortran Standard Library + +Recently we launched a [website](https://stdlib.fortran-lang.org) for the API documentation of the Fortran Standard Library. +The [website](https://stdlib.fortran-lang.org) is automaticaly generated by [FORD](https://github.com/Fortran-FOSS-Programmers/ford#readme). +[Code of Conduct](https://stdlib.fortran-lang.org/page/contributing/CodeOfConduct.html), [licence](https://stdlib.fortran-lang.org/page/License.html), and [workflow](https://stdlib.fortran-lang.org/page/contributing/Workflow.html) for contributing to the Fortran Standard Library can also be found on the [website](https://stdlib.fortran-lang.org/). + +Here's what's new in the Fortran Standard Library: + +- [#191](https://github.com/fortran-lang/stdlib/pull/191) + WIP: Function for computing Pearson correlations among elements of + an array in the `stdlib_experimental_stats` module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) + WIP: Procedures for sparse matrices operations. Ongoing discussion on the API can be found + [here](https://github.com/fortran-lang/stdlib/wiki/Stdlib-Sparse-matrix-API). +- [#183](https://github.com/fortran-lang/stdlib/pull/183) + Automatic API-doc generation and deployment of this [stdlib website](https://stdlib.fortran-lang.org) +- [#170](https://github.com/fortran-lang/stdlib/pull/170) + Addition of the new functions `diag`, `eye`, and `trace` functions to make working with + matrices easier. + Read the full specifications [here](https://stdlib.fortran-lang.org/page/specs/stdlib_experimental_linalg.html). + +## Package Manager + +In this past month support for dependencies between packages has been added +to the [Fortran Package Manager (fpm)](https://github.com/fortran-lang/fpm). +You can specify either a path to another folder on your machine with an fpm package, +or a git repository (and optionally a specific branch, tag or commit) that +contains the package. fpm will then take care of fetching the dependency for you +(if necessary) and any packages it depends on, and compiling and linking it into +your project. Check out an example [hello world package](https://gitlab.com/everythingfunctional/hello_fpm) +that uses this functionality. + +fpm is still in very early development, and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm. +- Improve the documentation. + +The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +Specific items that are new this month: + +- [#82](https://github.com/fortran-lang/fpm/pull/82) + You can now add remote git repositories as Fortran dependencies to your project. +- [#73](https://github.com/fortran-lang/fpm/pull/73) + Improved output messages for the user + +## Events + +- We hosted the very first Fortran Monthly call on May 14. + The turnout was astonishing--over 23 people joined. + You can read the notes from the call [here](https://fortran-lang.discourse.group/t/fortran-monthly-call-may-2020). + We'll have another one this month. + Subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or + join the [Discourse](https://fortran-lang.discourse.group) to stay tuned. +- [FortranCon 2020](https://tcevents.chem.uzh.ch/event/12) will take place on July 2-4 in Zurich, Switzerland. + Virtual participation is enabled for both attendees and speakers. + Registration is free and due by June 1, 2020. + There are quite a few submissions from the fortran-lang community: + A talk on [stdlib](https://github.com/fortran-lang/talks/tree/HEAD/FortranCon2020-stdlib) by Jeremie Vandenplas, + one about the [Fortran Package Manager (fpm)](https://github.com/fortran-lang/talks/tree/HEAD/FortranCon2020-fpm) by Brad Richardson, + a talk on [LFortran compiler](https://gitlab.com/lfortran/talks/fortrancon-2020-talk) by Ondřej Čertík, + as well as one about [building the Fortran community](https://github.com/fortran-lang/talks/tree/HEAD/FortranCon2020-community) + by Milan Curcic. +- J3/WG5 joint meeting, originally slated for October 12-16 in Las Vegas, Nevada, has been [cancelled](https://mailman.j3-fortran.org/pipermail/j3/2020-May/012034.html). + However, the work on proposals for the Fortran Standard doesn't stop. + You can submit a proposal for the Standards committee [here](https://github.com/j3-fortran/fortran_proposals). + For reference, you can read the [notes from the February meeting](/newsletter/2020/02/28/J3-february-meeting). + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories +[fortran-lang/stdlib](https://github.com/fortran-lang/stdlib), +[fortran-lang/fpm](https://github.com/fortran-lang/fpm), +[fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org), +[j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals): + +Ondřej Čertík ([@certik](https://github.com/certik)), Milan Curcic ([@milancurcic](https://github.com/milancurcic)), Laurence Kedward ([@LKedward](https://github.com/LKedward)), Jeremie Vandenplas ([@jvdp1](https://github.com/jvdp1)), Brad Richardson ([@everythingfunctional](https://github.com/everythingfunctional)), Izaak "Zaak" Beekman ([@zbeekman](https://github.com/zbeekman)), Martin Diehl ([@MarDiehl](https://github.com/MarDiehl)), [@arjenmarkus](https://github.com/arjenmarkus), Van Snyder ([@vansnyder](https://github.com/vansnyder)), [@FortranFan](https://github.com/FortranFan), [@epagone](https://github.com/epagone), Ivan ([@ivan-pi](https://github.com/ivan-pi)), Neil Carlson ([@nncarlson](https://github.com/nncarlson)), Ashwin Vishnu ([@ashwinvis](https://github.com/ashwinvis)), Williams A. Lima ([@ghwilliams](https://github.com/ghwilliams)), Peter Klausler ([@klausler](https://github.com/klausler)), Chris MacMackin ([@cmacmackin](https://github.com/cmacmackin)), Pedro Costa ([@p-costa](https://github.com/p-costa)), [@mobius-eng](https://github.com/mobius-eng), Salvatore Filippone ([@sfilippone](https://github.com/sfilippone)), [@ShamanTcler](https://github.com/ShamanTcler), Amit Kumar ([@aktech](https://github.com/aktech)), Bálint Aradi ([@aradi](https://github.com/aradi)), Melissa Weber Mendonça ([@melissawm](https://github.com/melissawm)), Jacob Williams ([@jacobwilliams](https://github.com/jacobwilliams)), Rohit Goswami ([@HaoZeke](https://github.com/HaoZeke)), Amir Shahmoradi ([@shahmoradi](https://github.com/shahmoradi)), Bill Long ([@longb](https://github.com/longb)). diff --git a/_sources/news/2020/07-01-Fortran-Newsletter-July-2020.md.txt b/_sources/news/2020/07-01-Fortran-Newsletter-July-2020.md.txt new file mode 100644 index 000000000000..3b1ca39c657e --- /dev/null +++ b/_sources/news/2020/07-01-Fortran-Newsletter-July-2020.md.txt @@ -0,0 +1,111 @@ +--- +category: newsletter +date: 2020-07-01 +author: Milan Curcic, Laurence Kedward, and Jérémie Vandenplas +... + +# Fortran newsletter: July 2020 + +Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month. + +## fortran-lang.org + +Work has continued on the Fortran-lang website, including a new community page and additional tutorial content: + +- [#98](https://github.com/fortran-lang/fortran-lang.org/pull/98): updated the [Quickstart mini-book](https://fortran-lang.org/learn/quickstart/derived_types) tutorial with a comprehensive overview of derived types; + +- [#99](https://github.com/fortran-lang/fortran-lang.org/pull/99): added a second mini-book tutorial to the [Learn](https://fortran-lang.org/learn) page on building compiled programs and libraries; + +- [#100](https://github.com/fortran-lang/fortran-lang.org/pull/100): added a new top-level web-page for Fortran-lang community projects. + The page gives useful information and links for new contributors, as well as acknowledging each of our many existing contributors. + Check it out at . + +Ongoing work: + +- [#101](https://github.com/fortran-lang/fortran-lang.org/issues/101): Code style for Fortran examples in the tutorials. + See the corresponding community poll and discussion on [Discourse](https://fortran-lang.discourse.group/t/should-tutorials-on-fortran-lang-org-follow-a-consistent-style-for-code-listings/134); + +- [#112](https://github.com/fortran-lang/fortran-lang.org/issues/112): Plan for core language tutorials. + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +**Did you know** you don't need to know HTML or any fancy languages to contribute to the website; +all of the online tutorials and most of the website content are written in [markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet), a simple markup language for formatting text - don't worry if you haven't used it before, it's very easy to pick up! + +## Fortran Standard Library + +What's new in the Fortran Standard Library: + +- [#209](https://github.com/fortran-lang/stdlib/pull/209) + Implements Simpson's rule for 1-d arrays (`simps` and `simps_weights`) in the + quadrature module (`stdlib_experimental_quadrature`). +- [#205](https://github.com/fortran-lang/stdlib/pull/205) + Tests for and improved standard conformance. + +Some miscellaneous fixes and improvements: + +- [#208](https://github.com/fortran-lang/stdlib/pull/208) + Fixes to support Intel Fortran compilers +- [#210](https://github.com/fortran-lang/stdlib/pull/210) + Fixes to support NAG compiler +- [#207](https://github.com/fortran-lang/stdlib/pull/207) + [#211](https://github.com/fortran-lang/stdlib/pull/211) + Other minor fixes and improvements + +## Fortran Package Manager + +What's new in fpm: + +- [#99](https://github.com/fortran-lang/fpm/pull/99) + fpm now lets you specify a custom build script or a Makefile to use. + This will help building packages that use a custom structure and/or external + dependencies in other languages. +- [#89](https://github.com/fortran-lang/fpm/pull/89) + Allow specifying specific tests or executables to run via command-line arguments. +- [#85](https://github.com/fortran-lang/fpm/pull/85) + Enables having specific dependencies for tests and executables. +- [#97](https://github.com/fortran-lang/fpm/pull/97) + [#100](https://github.com/fortran-lang/fpm/pull/100) + [#101](https://github.com/fortran-lang/fpm/pull/101) + Minor improvements to the README. + +fpm is still in very early development, and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm. +- Improve the documentation. + +The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Events + +- We had our second Fortran Monthly call on June 19. + You can read watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +- [FortranCon 2020](https://tcevents.chem.uzh.ch/event/12) began today (July 2), + with many interesting talks. + See the talk schedule [here](https://tcevents.chem.uzh.ch/event/12/timetable/#20200702.detailed). + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib), +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm), +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org), +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals): + +
diff --git a/_sources/news/2020/08-01-Fortran-Newsletter-August-2020.md.txt b/_sources/news/2020/08-01-Fortran-Newsletter-August-2020.md.txt new file mode 100644 index 000000000000..ee5e32db9618 --- /dev/null +++ b/_sources/news/2020/08-01-Fortran-Newsletter-August-2020.md.txt @@ -0,0 +1,163 @@ +--- +category: newsletter +date: 2020-08-01 +author: Ondřej Čertík, Milan Curcic, Laurence Kedward, Jérémie Vandenplas, Arjen Markus and Gary Klimowicz +... + +# Fortran newsletter: August 2020 + +Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month. + +## fortran-lang.org + +We continued the work on the Fortran-lang website, including: + +- [#116](https://github.com/fortran-lang/fortran-lang.org/pull/116): updates to the Quickstart tutorial on loop control and syntax + +- [#120](https://github.com/fortran-lang/fortran-lang.org/pull/120): updated the + [Book section](https://fortran-lang.org/learn/) with a comprehensive list of + books about Fortran + +- [#121](https://github.com/fortran-lang/fortran-lang.org/pull/121), [#122](https://github.com/fortran-lang/fortran-lang.org/pull/122), [#127](https://github.com/fortran-lang/fortran-lang.org/pull/127), [#128](https://github.com/fortran-lang/fortran-lang.org/pull/128): additional packages added to the Fortran-lang.org [packages](https://fortran-lang.org/packages) page + +Ongoing work: + +- [#117](https://github.com/fortran-lang/fortran-lang.org/issues/117): Adding a + Benchmarks section, a new dedicated repository was created at + https://github.com/fortran-lang/benchmarks and many details have been + discussed in [issues](https://github.com/fortran-lang/benchmarks/issues) there + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +What's new in the Fortran Standard Library: + +- [#223](https://github.com/fortran-lang/stdlib/pull/223): the structure of the Fortran Standard Library has been modified for clarity and ease of use. With these changes, both experimental and stable procedures will reside together in the same modules. The status of the procedures (experimental vs stable) are documented in the code, in the specs, and in the [API docs](https://stdlib.fortran-lang.org/) + +Main ongoing discussions: + +- [#225](https://github.com/fortran-lang/stdlib/issues/225): Name convention for derived types in `stdlib` +- [#224](https://github.com/fortran-lang/stdlib/issues/224): Handling and propagating errors inside `stdlib` +- [#221](https://github.com/fortran-lang/stdlib/issues/221): API for a bitset data type +- [#201](https://github.com/fortran-lang/stdlib/issues/201): API for file system operations + +## Fortran Package Manager + +What's new in fpm: + +- We created the [fpm-registry](https://github.com/fortran-lang/fpm-registry) repository, + which serves as a registry of fpm-enabled Fortran packages. + Please see the README there to learn how to contribute a package. + For now, the registry is simply a list of fpm-enabled Fortran packages that you can use as a dependency in your `fpm.toml` file. + Soon, this registry will be used to generate detailed metadata that will be used by fpm to allow you to search for packages from the command-line, e.g. `fpm search ` or similar. +- [#146](https://github.com/fortran-lang/fpm/issues/146): We discussed the design of the new Fortran implementation of fpm in a video call. We agreed on the need for an intermediate package model which will allow for clean separation of fpm frontends (user interface, parsing, and semantics) and fpm backends (fpm itself, CMake, Make, etc.). +- [#131](https://github.com/fortran-lang/fpm/pull/131), + [#132](https://github.com/fortran-lang/fpm/pull/132), + [#139](https://github.com/fortran-lang/fpm/pull/139), + [#140](https://github.com/fortran-lang/fpm/pull/140), + [#142](https://github.com/fortran-lang/fpm/pull/142), + [#145](https://github.com/fortran-lang/fpm/pull/145), + [#147](https://github.com/fortran-lang/fpm/pull/147), + [#148](https://github.com/fortran-lang/fpm/pull/148), + [#151](https://github.com/fortran-lang/fpm/pull/151): + We merged several pull requests toward the Fortran fpm implementation. The Haskell implementation has moved to the `fpm/bootstrap` directory, and the Fortran implementation is developed in `fpm/fpm`. The Fortran fpm is, of course, an fpm package itself so it can be built by the Haskell fpm. Soon, it will be able to be build by itself. + +fpm is still in very early development, and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm. +- Improve the documentation. + +The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Fortran benchmarks + +We created the [benchmarks repository](https://github.com/fortran-lang/benchmarks) with the goal to design and implement a comprehensive set of benchmarks. +The benchmarks will aim to compare the performance of various Fortran compilers, as well as the performance of canonical algorithms implemented in Fortran and different languages. +If you'd like to contribute in any way, be it the design, implementation, or testing of benchmarks, please join the ongoing discussion [here](https://github.com/fortran-lang/benchmarks/issues). + +## Classic Flang + +We've begun to evaluate pull requests and merge them into the original Flang +compiler again. There is now a biweekly call to discuss issues and plans for +Classic Flang. The next call will be Wednesday, August 12, 8:30 AM Pacific time. +The notes from previous calls, upcoming agenda and a link to join the call can +be found [here](https://docs.google.com/document/d/1-OuiKx4d7O6eLEJDBDKSRnSiUO2rgRR-c2Ga4AkrzOI). + +In the last call, AMD reviewed their outstanding pull requests for Fortran debug +metadata enhancements. + +## LLVM Flang + +Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs. We are fixing bugs we find in +running FCVS and other test suites that use F77. + +We cominue upstreaming the lowering code from the fir-dev fork (MLIR-based +Fortran IR) into the llvm-project repository. Arm is working on changes to +support a driver program to replace the throwaway driver we currently have. + +AMD has been contributing parser and semantic processing for OpenMP constructs +like task wait, barrier and parallel constructs. + +Changes have been made to default parse/unparse/compile processing to default to +gfortran (not NVIDIA Fortran). + +Valentin Clement has been committing initial changes for OpenACC support. + +## LFortran + +What's new in LFortran: + +- The initial prototype C++ backend can translate Fortran's `do concurrent` to C++'s `Kokkos::parallel_for`: [https://twitter.com/lfortranorg/status/1280764915242811393](https://twitter.com/lfortranorg/status/1280764915242811393) +- LFortran has a Twitter account for latest updates: [@lfortranorg](https://twitter.com/lfortranorg) +- Work is progressing on the production version of LFortran that is written in C++ +- 22 Merge Requests were merged and 4 issues fixed in July 2020. Some notable ones: + - [#163](https://gitlab.com/lfortran/lfortran/-/issues/163): Implement basic Fortran to C++ translation backend + - [!410](https://gitlab.com/lfortran/lfortran/-/merge_requests/410): Make simple calculations work via LLVM in interactive mode + - [!402](https://gitlab.com/lfortran/lfortran/-/merge_requests/402): Build ASR (Abstract Semantic Representation) properly for subroutines and functions + +The short term goal is to get the C++ based production version of LFortran +matching most of the features from the Python prototype version and make a +public release. The long term goal is to build a modern Fortran compiler that +works with any production code and allows it to run efficiently on modern +hardware (CPUs and GPUs), both interactively and compiling to binaries, and +provide the basis for other tools such as the Fortran to C++ translation, editor +support, automatic documentation generation (and doctesting like in Python), +automatic formatting and others. + +## Events + +- [FortranCon 2020](https://tcevents.chem.uzh.ch/event/12) was held July 2 - 4. + with many interesting talks. + See the talk schedule + [here](https://tcevents.chem.uzh.ch/event/12/timetable/#20200702.detailed). + All presentations have been recorded and will be soon made available online by the FortranCon organizers. + +- We had our third Fortran Monthly call on July 16. + You can read watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib), +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm), +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org), +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals): + +
diff --git a/_sources/news/2020/09-01-Fortran-Newsletter-September-2020.md.txt b/_sources/news/2020/09-01-Fortran-Newsletter-September-2020.md.txt new file mode 100644 index 000000000000..41b909e21b9a --- /dev/null +++ b/_sources/news/2020/09-01-Fortran-Newsletter-September-2020.md.txt @@ -0,0 +1,161 @@ +--- +category: newsletter +date: 2020-09-01 +author: Milan Curcic, Ondřej Čertík, Gary Klimowicz, Brad Richardson, Jérémie Vandenplas, Thomas König, and Laurence Kedward +... + +# Fortran newsletter: September 2020 + +Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month. + +## fortran-lang.org + +We continued the work on the Fortran-lang website, specifically: + +- [#133](https://github.com/fortran-lang/fortran-lang.org/pull/133): + Listing fpm packages on the Packages page of the website + +Ongoing work: + +- [#117](https://github.com/fortran-lang/fortran-lang.org/issues/117): Adding a + Benchmarks section, a new dedicated repository was created at + https://github.com/fortran-lang/benchmarks and many details have been + discussed in [issues](https://github.com/fortran-lang/benchmarks/issues) there + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +There hasn't been new stdlib development in August, however ongoing work and discussions continue: + +- [#227](https://github.com/fortran-lang/stdlib/issues/227): API proposal for logging facilities in stdlib +- [#225](https://github.com/fortran-lang/stdlib/issues/225): Name convention for derived types in stdlib +- [#224](https://github.com/fortran-lang/stdlib/issues/224): Handling and propagating errors inside stdlib +- [#221](https://github.com/fortran-lang/stdlib/issues/221): API for a bitset data type +- [#201](https://github.com/fortran-lang/stdlib/issues/201): API for file system operations + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Ongoing work in fpm: + +- [#146](https://github.com/fortran-lang/fpm/issues/146) (WIP): + Implementing internal dependencies and build backend in the Fortran fpm + +fpm is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Fortran benchmarks + +We created the [benchmarks repository](https://github.com/fortran-lang/benchmarks) with the goal to design and implement a comprehensive set of benchmarks. +The benchmarks will aim to compare the performance of various Fortran compilers, as well as the performance of canonical algorithms implemented in Fortran and different languages. +If you'd like to contribute in any way, be it the design, implementation, or testing of benchmarks, please join the ongoing discussion [here](https://github.com/fortran-lang/benchmarks/issues). + +## Compilers + +### GFortran + +GFortran 10.2 has been released, a bugfix release for 10.1. +Bugs fixed include PR94361, a memory leak with finalizers. + +The development version of `gfortran` now supports the +full OpenMP 4.5 specification. This will be released +with GCC 11, but of course people can already download +and test it. + +### Classic Flang + +We're evaluating pull requests and merging them into the original Flang +compiler again. We pulled in 4 changes in the past couple of weeks, and expect +to merge in a few more each week. One upcoming change is the support for LLVM 10, +which requires the use of a new fork, the _classic-flang-llvm-project_ +fork of the LLVM monorepo. See +[PR#1](https://github.com/flang-compiler/classic-flang-llvm-project/pull/1) +for details. + +The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, September 9 and 23, 8:30 AM Pacific time. The notes from previous +calls, upcoming agenda and a link to join the call can be found +[here](https://docs.google.com/document/d/1-OuiKx4d7O6eLEJDBDKSRnSiUO2rgRR-c2Ga4AkrzOI). + +### LLVM Flang + +Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs. We are fixing bugs we find +in running FCVS and other F77 test suites (and the F77 parts of non-F77 +suites). + +In conjunction with the MLIR-based code from the _fir-dev_ fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs. We +continue to work on refactoring necessary to upstream this fork into LLVM +flang proper. + +Arm is working on changes to support a driver program to replace the temporary +driver we currently use. + +Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support. + +### LFortran + +What's new in LFortran: + +- 143 Merge Requests were merged and 22 issues fixed in August 2020 +- The C++ backend can now translate to C++ and compile many simple Fortran programs +- The parser can now parse a large subset of Fortran (if you find something that + cannot be parsed, please [report](https://gitlab.com/lfortran/lfortran/-/issues) a bug). Not all the information is yet + represented in the AST (so later stages of the compiler also work on a smaller + subset), but one should not get parse errors anymore for most valid codes. +- Initial `lfortran fmt` subcommand for formatting Fortran files, you can + provide feedback + [here](https://fortran-lang.discourse.group/t/feedback-for-lfortran-fmt-to-format-fortran-source-code/281). +- A new command `lfortran kernel` can run LFortran as a Jupyter kernel. +- LFortran itself gives a nice Python like stacktrace (on Linux and macOS) in + Debug mode when an unhandled excetion happens or a segfault. + +Our goal for September is to get LFortran working for a much larger subset of +Fortran and allow it to compile and run via the C++ translation backend (the +LLVM backend will follow soon after). + +You can follow LFortran on Twitter for latest updates: [@lfortranorg](https://twitter.com/lfortranorg). + +## Events + +- We had our fourth Fortran Monthly call on August 20. + You can watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib), +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm), +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry), +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org), +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks), +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals): + +
diff --git a/_sources/news/2020/10-01-Fortran-Newsletter-October-2020.md.txt b/_sources/news/2020/10-01-Fortran-Newsletter-October-2020.md.txt new file mode 100644 index 000000000000..ee9cc1f175ef --- /dev/null +++ b/_sources/news/2020/10-01-Fortran-Newsletter-October-2020.md.txt @@ -0,0 +1,193 @@ +--- +category: newsletter +date: 2020-10-01 +author: Milan Curcic, Ondřej Čertík, Gary Klimowicz, Brad Richardson, Jérémie Vandenplas, and Laurence Kedward +... + +# Fortran newsletter: October 2020 + +Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month. + +# fortran-lang.org + +This month we've had only one minor change to the website: + +- [#136](https://github.com/fortran-lang/fortran-lang.org/pull/136): + Small fix in the opening sentence on the compilers page + +Ongoing work: + +- [#117](https://github.com/fortran-lang/fortran-lang.org/issues/117): Adding a + Benchmarks section, a new dedicated repository was created at + https://github.com/fortran-lang/benchmarks and many details have been + discussed in [issues](https://github.com/fortran-lang/benchmarks/issues) there. + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +This month we've had an improvement to the `stdlib_ascii` module, +as well as addition of logging facilities. + +- [#238](https://github.com/fortran-lang/stdlib/pull/238): Improvements to the `stdlib_stats` module by adding explicit conversions. +- [#228](https://github.com/fortran-lang/stdlib/pull/228): Implementation of the `stdlib_logger` module. + It provides a global logger instance for easy use in user applications, as well as a `logger_type` derived type + if multiple concurrent loggers are needed. + See the [logger specification](https://stdlib.fortran-lang.org/page/specs/stdlib_logger.html) + to learn more. + +Work in progress: + +- [#239](https://github.com/fortran-lang/stdlib/pull/239): Implementation of the `stdlib_bitsets` module. It provides a bitset data type. +- [#235](https://github.com/fortran-lang/stdlib/pull/235): Improvements to the `stdlib_ascii` module + +Otherwise, ongoing discussions continue: + +- [#225](https://github.com/fortran-lang/stdlib/issues/225): Name convention for derived types in stdlib +- [#224](https://github.com/fortran-lang/stdlib/issues/224): Handling and propagating errors inside stdlib +- [#221](https://github.com/fortran-lang/stdlib/issues/221): API for a bitset data type +- [#201](https://github.com/fortran-lang/stdlib/issues/201): API for file system operations + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +This month has seen over a dozen additions and improvements to the Fortran implementation of fpm: + +- [#186](https://github.com/fortran-lang/fpm/issues/186): Implement version string validation and comparison +- [#185](https://github.com/fortran-lang/fpm/issues/185): Update CI workflow +- [#182](https://github.com/fortran-lang/fpm/issues/182): CLI interface to further development of subcommands +- [#180](https://github.com/fortran-lang/fpm/issues/180): Recursive source discovery +- [#178](https://github.com/fortran-lang/fpm/issues/178): Add more example packages +- [#177](https://github.com/fortran-lang/fpm/issues/177): Allow selective testing of single suites and tests +- [#175](https://github.com/fortran-lang/fpm/issues/175): Updated formatting of Markdown documents +- [#174](https://github.com/fortran-lang/fpm/issues/174): Cache Haskell Stack build in CI +- [#171](https://github.com/fortran-lang/fpm/issues/171): Increase test coverage of fpm manifest +- [#170](https://github.com/fortran-lang/fpm/issues/170): Source parsing tests +- [#163](https://github.com/fortran-lang/fpm/issues/163): Use different strategy to fetch git dependencies +- [#162](https://github.com/fortran-lang/fpm/issues/162): Updated OS type identification +- [#160](https://github.com/fortran-lang/fpm/issues/160): Add contributing guidelines + (you can read them [here](https://github.com/fortran-lang/fpm/CONTRIBUTING.md)) +- [#157](https://github.com/fortran-lang/fpm/issues/157): Implement reading of fpm.toml +- [#155](https://github.com/fortran-lang/fpm/issues/155): Internal dependencies and build backend + +Work in progress: + +- [#193](https://github.com/fortran-lang/fpm/issues/193) (WIP): Local path dependencies +- [#190](https://github.com/fortran-lang/fpm/issues/190) (WIP): Auto discovery of executables +- [#189](https://github.com/fortran-lang/fpm/issues/189) (WIP): Implement `fpm new` + +fpm is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +We continue to evaluate and merge pull requests into the original Flang +compiler again. We pulled in several changes in the past month. + +One important merge was support for LLVM 10, +which required the use of a new fork, the _classic-flang-llvm-project_ +fork of the LLVM monorepo. See +[PR#1](https://github.com/flang-compiler/classic-flang-llvm-project/pull/1) +for details. + +Other recently merged pull requests into Classic Flang include: + +- [PR#658: Fix in preprocessing for Flexi app](https://github.com/flang-compiler/flang/pull/658) +- [PR#737: TRAILZ function added to the fortran compiler](https://github.com/flang-compiler/flang/pull/737) +- [PR#756: Fix ICE interf:new_symbol_and_link symbol not found](https://github.com/flang-compiler/flang/pull/756) +- [PR#888: flang gen-exec does not show routine variables with parameter attribute; there are multiple pull requests that this includes (details below)](https://github.com/flang-compiler/flang/pull/888) +- [PR#916: Fix off-by-one error in minimum integers](https://github.com/flang-compiler/flang/pull/916) +- [PR#921: Correction of representation of string (character type) constants](https://github.com/flang-compiler/flang/pull/921) + +The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, October 7 and 21, 8:30 AM Pacific time. The notes from previous +calls, upcoming agenda and a link to join the call can be found +[here](https://docs.google.com/document/d/1-OuiKx4d7O6eLEJDBDKSRnSiUO2rgRR-c2Ga4AkrzOI). + +### LLVM Flang + +Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs. + +In conjunction with the MLIR-based code from the _fir-dev_ fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs, +including the Fortran Compiler Validation Suite (FCVS). +We continue to work on refactoring necessary to upstream the _fir-dev_ fork into LLVM +flang proper. + +Arm has contributed changes toward a full-fledged driver for flang. + +AMD continues to add support for OpenMP semantics and lowering. + +Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support. This will be the topic of the next Flang Technical Community call +on Monday, October 5, 8:30 AM Pacific Time. + +Michael Kruse continues to add support for building Flang on Windows with MSVC. + +### LFortran + +What's new in LFortran: + +- 59 Merge Requests were merged and 3 issues fixed in September 2020 +- The FortranCon 2020 LFortran video now [available](https://www.youtube.com/watch?v=tW9tUxVMnzc) +- LFortran, now imlemented in C++, has surpassed the Python prototype from a + year ago +- The Jupyter notebook now works as it used to with the Python prototype +- A new notebook added showcasing how to visualize AST, ASR and C++ translation + in Jupyter ([!624](https://gitlab.com/lfortran/lfortran/-/merge_requests/624)) +- X86 backend to generate direct x86-32 machine code (very fast compilation in + Debug mode) +- Further parser improvements +- Initial Fortran modules support +- Initial support for using GFortran modules + ([!632](https://gitlab.com/lfortran/lfortran/-/merge_requests/632)) +- Better compiler error messages + ([!617](https://gitlab.com/lfortran/lfortran/-/merge_requests/617)) +- The interactive prompt (REPL) now understands arrow keys + ([!603](https://gitlab.com/lfortran/lfortran/-/merge_requests/603)) + +You can follow LFortran on Twitter for latest updates: [@lfortranorg](https://twitter.com/lfortranorg). + +## Events + +- We had our fourth Fortran Monthly call on September 25. + You can watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib), +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm), +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry), +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org), +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks), +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals): + +
diff --git a/_sources/news/2020/11-01-Fortran-Newsletter-November-2020.md.txt b/_sources/news/2020/11-01-Fortran-Newsletter-November-2020.md.txt new file mode 100644 index 000000000000..4471544bc1b0 --- /dev/null +++ b/_sources/news/2020/11-01-Fortran-Newsletter-November-2020.md.txt @@ -0,0 +1,190 @@ +--- +category: newsletter +date: 2020-11-01 +author: Milan Curcic, Sebastian Ehlert, Laurence Kedward, Jeremie Vandenplas, Ivan Pribec, Ondřej Čertík, Gary Klimowicz, Brad Richardson +... + +# Fortran newsletter: November 2020 + +Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had a few additions and improvements to the website: + +- [#152](https://github.com/fortran-lang/fortran-lang.org/pull/152): + New mini-book on setting up the Fortran development environment. + You can read it [here](https://fortran-lang.org/learn/os_setup). +- [#147](https://github.com/fortran-lang/fortran-lang.org/pull/147): + Automated posting to @fortranlang Twitter using twitter-together. +- [#155](https://github.com/fortran-lang/fortran-lang.org/pull/155): + Fix for a security vulnerability reported by the GitHub Security Team. +- The following packages were added to the + [Package Index](https://fortran-lang.org/packages): + atomsk, ddPCM, DFTB+, DFT-D4, ELPA, ELSI, FortJSON, fypp, HANDE, libmbd, libnegf, + mpifx, NTPoly, NWChem, OpenMolcas, PoisFFT, QMD-PROGRESS, scalapackfx, + tapenade, wannier90, and xtb. +- [#145](https://github.com/fortran-lang/fortran-lang.org/pull/145), + [#146](https://github.com/fortran-lang/fortran-lang.org/pull/146), + [#154](https://github.com/fortran-lang/fortran-lang.org/pull/154), + [#158](https://github.com/fortran-lang/fortran-lang.org/pull/158): + Minor fixes and improvements. + +Ongoing work: + +- [#160](https://github.com/fortran-lang/fortran-lang.org/pull/160) (WIP): + In-depth introduction for Fortran with Make. +- [#156](https://github.com/fortran-lang/fortran-lang.org/pull/156) (WIP): + Updating the mini-book on building programs. + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +This month progress was made on a few pull requests: + +- [#239](https://github.com/fortran-lang/stdlib/pull/239): Implementation of the `stdlib_bitsets` module. It provides a bitset data type. +- [#240](https://github.com/fortran-lang/stdlib/pull/240): Implementation of the `stdlib_stats_distribution` module. It provides probability distribution and statistical functions. +- [#243](https://github.com/fortran-lang/stdlib/pull/243): A proposition to support newline characters in the message provided to the logger. + +Don't hesitate to test and review these pull requests! + +Otherwise, ongoing discussions continue; + +- [#220](https://github.com/fortran-lang/stdlib/pull/220): API for file system operations: directory manipulation +- [#241](https://github.com/fortran-lang/stdlib/pull/241): Include a `split` function (202X feature) + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +What's new: + +- [#213](https://github.com/fortran-lang/fpm/issues/213): Bootstrap fpm submodule support +- [#208](https://github.com/fortran-lang/fpm/issues/208): Minor fixes to `list_files` and `mkdir` in `fpm_filesystem` +- [#206](https://github.com/fortran-lang/fpm/issues/206): Add installation script in `install.sh` +- [#193](https://github.com/fortran-lang/fpm/issues/193): Local and remote package dependencies (Fortran fpm can now build itself) +- [#190](https://github.com/fortran-lang/fpm/issues/190): Auto discovery of executables +- [#189](https://github.com/fortran-lang/fpm/issues/189), + [#204](https://github.com/fortran-lang/fpm/issues/204), + [#203](https://github.com/fortran-lang/fpm/issues/203): Implement `fpm new` in Fortran fpm + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): First feature-complete release of the Fortran implementation. +- [#221](https://github.com/fortran-lang/fpm/issues/221) (WIP): Test and executable runner options +- [#220](https://github.com/fortran-lang/fpm/issues/220) (WIP): Compiler and flags +- [#216](https://github.com/fortran-lang/fpm/issues/216) (WIP): Remove bashism from install.sh +- [#209](https://github.com/fortran-lang/fpm/issues/209) (WIP): Add automatic documentation for Fortran fpm +- [#202](https://github.com/fortran-lang/fpm/issues/202) (WIP): Create package manifest with toml-f build interface + +fpm is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Try to use it. Does it work? No? Let us know! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +We continue to evaluate and merge pull requests into the original Flang +compiler again. We pulled in several changes in October. + +Recently merged pull requests into Classic Flang include: + +- [PR#660: Enable support for simd directives](https://github.com/flang-compiler/flang/pull/660) +- [PR#878: [DebugInfo]: Fix for missing DISPFlagOptimized in debug metadata](https://github.com/flang-compiler/flang/pull/878) +- [PR#910: Fix f90_correct tests](https://github.com/flang-compiler/flang/pull/910) +- [PR#922: Fix private flag overwrite in find_def_in_most_recent_scope()](https://github.com/flang-compiler/flang/pull/922) +- [PR#927: f90_correct: exclude tests failing with LLVM 10 on OpenPOWER](https://github.com/flang-compiler/flang/pull/927) +- [PR#930: Fix HTML docs generation](https://github.com/flang-compiler/flang/pull/930) +- [PR#931: [flang2] Fix segmentation faults (#421)](https://github.com/flang-compiler/flang/pull/931) +- [PR#932: [flang1] Do not assume unempty derived types](https://github.com/flang-compiler/flang/pull/932) +- [PR#938: [flang2] Fixing possible crash due to ivl being NULL in dinit.cpp](https://github.com/flang-compiler/flang/pull/938) + +The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, November 4 and 18, 8:00 AM Pacific time (note the time change). +The notes from previous calls, upcoming agenda and a link to join the call can be found +[here](https://docs.google.com/document/d/1-OuiKx4d7O6eLEJDBDKSRnSiUO2rgRR-c2Ga4AkrzOI). + +### LLVM Flang + +Work continues on LLVM Flang, concentrating on semantics, lowering and runtime. + +In conjunction with the MLIR-based code from the _fir-dev_ fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs, +including the Fortran Compiler Validation Suite (FCVS). + +Pat McCormick is working on an RFC for the merge of the lowering code +in the fir-dev fork into LLVM master. +The goal is to expedite this in a way that is acceptable to the Flang community, +so we can do further work in the single master branch. + +Arm continues to contribute changes toward a full-fledged driver for flang. + +AMD continues to add support for OpenMP semantics and lowering. + +Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support. + +Michael Kruse continues to add support for building Flang on Windows with MSVC +to the point that he can build and test Flang on Windows. + +### LFortran + +What's new in LFortran: + +- 9 Merge Requests were merged and 5 issues fixed in October 2020 +- We gave LFortran + [talk](https://cfp.jupytercon.com/2020/schedule/presentation/169/lfortran-interactive-llvm-based-fortran-compiler-for-modern-architectures/) + at JupyterCon 2020 +- A prototype compiler implementation of conditional expressions for the + October 2020 Fortran Standards Committee meeting + ([!645](https://gitlab.com/lfortran/lfortran/-/merge_requests/645)) +- Better code formatting support (`lfortran fmt`) +- Improvements to AST +- Capture stdout on Windows in a Jupyter notebook + ([!642](https://gitlab.com/lfortran/lfortran/-/merge_requests/642)) + +You can follow LFortran on Twitter for latest updates: [@lfortranorg](https://twitter.com/lfortranorg). + +## Events + +- The US Fortran Standards Committee held a virtual meeting from October 12-14. + You can read the summary and the discussion [here](https://github.com/j3-fortran/fortran_proposals/issues/185) and all the documents [here](https://j3-fortran.org/doc/meeting/222). + +- We had our 5th Fortran Monthly call on October 27. + You can watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2020/12-01-Fortran-Newsletter-December-2020.md.txt b/_sources/news/2020/12-01-Fortran-Newsletter-December-2020.md.txt new file mode 100644 index 000000000000..350a7eb8c915 --- /dev/null +++ b/_sources/news/2020/12-01-Fortran-Newsletter-December-2020.md.txt @@ -0,0 +1,186 @@ +--- +category: newsletter +date: 2020-12-01 +author: Milan Curcic, Jérémie Vandenplas, Laurence Kedward, Gary Klimowicz, Ondřej Čertík +... + +# Fortran newsletter: December 2020 + +Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had a few updates to the website: + +- [#156](https://github.com/fortran-lang/fortran-lang.org/pull/156): + Updates to the mini-book on building Fortran programs, including the addition of + short guides on Meson and CMake. + You can read the mini-book [here](https://fortran-lang.org/learn/building_programs). +- [#169](https://github.com/fortran-lang/fortran-lang.org/pull/169): + Add PSBLAS to the package index. + +Ongoing work: + +- [#160](https://github.com/fortran-lang/fortran-lang.org/pull/160) (WIP): + In-depth introduction for Fortran with Make. + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#239](https://github.com/fortran-lang/stdlib/pull/239): Implementation of bitsets in `stdlib_bitsets`. +- [#243](https://github.com/fortran-lang/stdlib/pull/243), + [#245](https://github.com/fortran-lang/stdlib/pull/245), + [#252](https://github.com/fortran-lang/stdlib/pull/253), + [#255](https://github.com/fortran-lang/stdlib/pull/255): Various improvements to `stdlib_logger`. +- [#245](https://github.com/fortran-lang/stdlib/pull/245), + [#250](https://github.com/fortran-lang/stdlib/pull/250): Minor fixes to the CI. + +Work in progress: + +- (WIP) [#240](https://github.com/fortran-lang/stdlib/pull/240): Implementation of the `stdlib_stats_distribution` module. It provides probability distribution and statistical functions. +- (WIP) [#189](https://github.com/fortran-lang/stdlib/pull/189): Initial implementation of sparse matrices. + +Don't hesitate to test and review these pull requests! + +Otherwise, ongoing discussions continue: + +- [#220](https://github.com/fortran-lang/stdlib/issues/220): API for file system operations: directory manipulation +- [#241](https://github.com/fortran-lang/stdlib/issues/241): Include a `split` function (202X feature) +- [#254](https://github.com/fortran-lang/stdlib/issues/254): Proposition to add a logger for debug phases and levels among the different logs. + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [#259](https://github.com/fortran-lang/fpm/pull/259): Update the instructions for building from source in README.md. +- [#246](https://github.com/fortran-lang/fpm/pull/246): Automated binary releases in CI. +- [#233](https://github.com/fortran-lang/fpm/pull/233): Allow linking with external libraries. +- [#224](https://github.com/fortran-lang/fpm/pull/224): Add a reference document for the package manifest (fpm.toml). +- [#221](https://github.com/fortran-lang/fpm/pull/221), + [#239](https://github.com/fortran-lang/fpm/pull/239): Runner options for test and app executables. +- [#220](https://github.com/fortran-lang/fpm/pull/220): Implement compiler and flags settings in Haskell fpm. +- [#209](https://github.com/fortran-lang/fpm/pull/209): + [#237](https://github.com/fortran-lang/fpm/pull/237): Developer API docs. +- [#216](https://github.com/fortran-lang/fpm/pull/216), + [#225](https://github.com/fortran-lang/fpm/pull/225), + [#226](https://github.com/fortran-lang/fpm/pull/226), + [#229](https://github.com/fortran-lang/fpm/pull/229), + [#236](https://github.com/fortran-lang/fpm/pull/236), + [#240](https://github.com/fortran-lang/fpm/pull/240), + [#247](https://github.com/fortran-lang/fpm/pull/240): Other fixes and improvements. + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): First feature-complete release of the Fortran implementation. +- (WIP) [#230](https://github.com/fortran-lang/fpm/pull/230), + [#261](https://github.com/fortran-lang/fpm/pull/261): Specification of the fpm CLI. +- (WIP) [#232](https://github.com/fortran-lang/fpm/pull/232): Allowing the `extra` section in fpm.toml. +- (WIP) [#248](https://github.com/fortran-lang/fpm/pull/248): Refactor backend for incremental rebuilds. +- (WIP) [#251](https://github.com/fortran-lang/fpm/pull/251): Dependency management. +- (WIP) [#255](https://github.com/fortran-lang/fpm/pull/255): Setting the compiler and specifying test or app target. +- (WIP) [#257](https://github.com/fortran-lang/fpm/pull/257): Implement `fpm install`. +- (WIP) [#260](https://github.com/fortran-lang/fpm/pull/260): Fix CI to test release build. + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +We continue to evaluate and merge pull requests into Classic Flang. Recently merged pull requests into Classic Flang include: + +- [PR#883: Flang generated executable does not show result variable of function](https://github.com/flang-compiler/flang/pull/883) +- [PR#933: Updating X-flag entries for internal command line option "-x 49"](https://github.com/flang-compiler/flang/pull/933) +- [PR#939: Publish Arm's internal documentation](https://github.com/flang-compiler/flang/pull/939) +- [PR#941: [DebugInfo] Internal subprogram variable is not accessible for printing in gdb](https://github.com/flang-compiler/flang/pull/941) +- [PR#942: Implement UNROLL(n) directive](https://github.com/flang-compiler/flang/pull/942) +- [PR#943: Enable github Actions for push to master and pull requests to master](https://github.com/flang-compiler/flang/pull/943) +- [PR#945: libpgmath: Stop using pgstdinit.h](https://github.com/flang-compiler/flang/pull/945) +- [PR#946: Call check_member() for PD_is_contiguous](https://github.com/flang-compiler/flang/pull/946) +- [PR#951: Fix for ICE in atomic instruction generation](https://github.com/flang-compiler/flang/pull/951) + +Pull requests merged into the supporting projects: + +- [classic flang LLVM monorepo PR#5: [Driver] Reduce downstream delta](https://github.com/flang-compiler/classic-flang-llvm-project/pull/5) +- [classic flang LLVM monorepo PR#6: Removing a few CI pipelines](https://github.com/flang-compiler/classic-flang-llvm-project/pull/6) +- [classic flang LLVM monorepo PR#7: Github Actions added to pre-compile artifacts for flang](https://github.com/flang-compiler/classic-flang-llvm-project/pull/7) +- [llvm mirror PR#87: Enable github actions for llvm](https://github.com/flang-compiler/llvm/pull/87) +- [flang-driver PR#94: Enable github actions](https://github.com/flang-compiler/flang-driver/pull/94) + +The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls are Wednesday, December 16 and 30, 8:00 AM Pacific time. The notes from previous calls, upcoming agenda and a link to join the call can be found +[here](https://docs.google.com/document/d/1-OuiKx4d7O6eLEJDBDKSRnSiUO2rgRR-c2Ga4AkrzOI). + +### LLVM Flang + +Work continues on LLVM Flang, concentrating on semantics, lowering and runtime. Significant contributions are being made for OpenMP and OpenACC support. + +In conjunction with the MLIR-based code from the _fir-dev_ fork (the Fortran IR used for lowering), Flang can compile and run most F77 programs, including the Fortran Compiler Validation Suite (FCVS). + +Pat McCormick is (still) working on an RFC for the merge of the lowering code +in the fir-dev fork into LLVM master. (This was interrupted by Supercomputing 2020 and other ECP duties.) The goal is to expedite this in a way that is acceptable to the Flang community, so we can do further work in the single master branch. + +Recent updates include: + +- Johannes Doerfert has created a web page at https://flang.llvm.org; you can find call and Slack logistics there +- Nichols Romero has an llvm-dev RFC for adding Fortran tests to the llvm-tests project: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146873.html +- Andzrej Warzynski has a flang-dev RFC regarding flang option names: http://lists.llvm.org/pipermail/flang-dev/2020-November/000588.html +- Andzrej Warzynski has a cfe-dev RFC regarding refactoring clang to help flang driver become independent of clang: http://lists.llvm.org/pipermail/cfe-dev/2020-November/067263.html +- Changed representation of CHARACTER data in type system to make more consistent with other types (for arrays) +- Changed COMPLEX expression representation to provide better handling in lowering +- More improvements for supporting Fortran 77 programs +- Implemented runtime support for basic ALLOCATE/DEALLOCATE and further work +- Continued implementation of table-driven runtime for derived types; posted documentation +- Continued implementation of array expression lowering +- Improved error checks on forward references +- More updates to flang driver (option handling; -E can now be used to invoke just the Flang preprocessor) +- OpenACC semantic checks for modifiers on enter/exit data, set directives +- OpenACC lowering (enter/exit data, update, init, shutdown, wait directives) +- OpenMP structure checker updates; semantic checks for copyin clause; schedule class + +## Events + +- Brian Friesen (Lawrence Berkeley National Laboratory) was selected to be the new Chair of PL22.3 (J3, US Standards Committee). + Brian will serve in his first term until November 2023. Congratulations, Brian! +- We had our 6th Fortran Monthly call on November 17. + You can watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/01-01-Fortran-Newsletter-January-2021.md.txt b/_sources/news/2021/01-01-Fortran-Newsletter-January-2021.md.txt new file mode 100644 index 000000000000..1388a5c7ee20 --- /dev/null +++ b/_sources/news/2021/01-01-Fortran-Newsletter-January-2021.md.txt @@ -0,0 +1,239 @@ +--- +category: newsletter +date: 2021-01-01 +author: Jérémie Vandenplas, Sebastian Ehlert, Laurence Kedward, Milan Curcic, Gary Klimowicz, Ondřej Čertík +... + +# Fortran newsletter: January 2021 + +Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had a few updates to the website: + +- [#178](https://github.com/fortran-lang/fortran-lang.org/pull/178), + [#188](https://github.com/fortran-lang/fortran-lang.org/pull/188): + Fix build preview +- [#179](https://github.com/fortran-lang/fortran-lang.org/pull/179): + Fix word spelling error in quickstart page +- [#173](https://github.com/fortran-lang/fortran-lang.org/pull/173), + [#180](https://github.com/fortran-lang/fortran-lang.org/pull/180), + [#186](https://github.com/fortran-lang/fortran-lang.org/pull/186): + Add missing packages from the list of popular Fortran projects to the package index +- [#182](https://github.com/fortran-lang/fortran-lang.org/pull/182): + Update compilers page following Intel oneAPI release +- [#160](https://github.com/fortran-lang/fortran-lang.org/pull/160), + [#171](https://github.com/fortran-lang/fortran-lang.org/pull/171): + In-depth introduction for Fortran with Make. + +Ongoing work: + +- [#187](https://github.com/fortran-lang/fortran-lang.org/pull/187) (WIP): + Correct compiler page and tutorial regarding Intel oneAPI and PGI to NVIDIA +- [#174](https://github.com/fortran-lang/fortran-lang.org/issues/174) (WIP): + We are searching for a representative Fortran code snippet for the website and are looking forward to suggestions. +- [#190](https://github.com/fortran-lang/fortran-lang.org/pull/190) (WIP): + Add links to fpm contributing guidelines + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#256](https://github.com/fortran-lang/stdlib/pull/256): Add the method `log_debug` to `stdlib_logger` +- [#257](https://github.com/fortran-lang/stdlib/pull/257): Improve CMake check for F18 error stop +- [#260](https://github.com/fortran-lang/stdlib/pull/260): Add Intel oneAPI Fortran compiler to CI +- [#261](https://github.com/fortran-lang/stdlib/pull/261): Add a level option to ignore logging messages +- [#263](https://github.com/fortran-lang/stdlib/pull/263), + [#267](https://github.com/fortran-lang/stdlib/pull/267): Minor fixes to CI +- [#270](https://github.com/fortran-lang/stdlib/pull/270): Add GFortran 10 to CI +- [#275](https://github.com/fortran-lang/stdlib/pull/275): Add MSYS2 systems to Windows CI +- [#282](https://github.com/fortran-lang/stdlib/pull/282): Add a note about memory issues when compiling stdlib with the support of arrays to up 15 ranks +- [#283](https://github.com/fortran-lang/stdlib/pull/283): Improve the compilation load by splitting submodules + +Work in progress: + +- [#269](https://github.com/fortran-lang/stdlib/pull/269) (WIP): Implementation of a module for handling lists of strings +- [#271](https://github.com/fortran-lang/stdlib/pull/271) (WIP), + [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): Implementation of the `stdlib_stats_distribution` modules. It provides probability distribution and statistical functions. +- [#284](https://github.com/fortran-lang/stdlib/pull/284) (WIP): Required changes to be able to use `stdlib` as a subproject in CMake +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): Initial implementation of sparse matrices. + +Don't hesitate to test and review these pull requests! + +Otherwise, ongoing discussions continue about usability of `stdlib` +([#7](https://github.com/fortran-lang/stdlib/issues/7), +[#215](https://github.com/fortran-lang/stdlib/issues/215), +[#279](https://github.com/fortran-lang/stdlib/issues/279), +[#280](https://github.com/fortran-lang/stdlib/issues/280), +[#285](https://github.com/fortran-lang/stdlib/issues/285)), +and new implementations for `stdlib` +([#135](https://github.com/fortran-lang/stdlib/issues/135), +[#212](https://github.com/fortran-lang/stdlib/issues/212), +[#234](https://github.com/fortran-lang/stdlib/issues/234), +[#241](https://github.com/fortran-lang/stdlib/issues/241), +[#258](https://github.com/fortran-lang/stdlib/issues/258), +[#259](https://github.com/fortran-lang/stdlib/issues/259), +[#262](https://github.com/fortran-lang/stdlib/issues/262), +[#268](https://github.com/fortran-lang/stdlib/issues/268), +[#277](https://github.com/fortran-lang/stdlib/issues/277)). + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [Alpha release version 0.1.3](https://github.com/fortran-lang/fpm/releases/tag/v0.1.3) +- [setup-fpm action](https://github.com/marketplace/actions/setup-fpm): + GitHub Action to setup the Fortran Package Manager on Ubuntu, MacOS and Windows runners +- [Discussion board](https://github.com/fortran-lang/fpm/discussions): + For questions & answers, sharing of ideas, showing off projects and, of course, discussions around fpm +- [#248](https://github.com/fortran-lang/fpm/pull/248): + Refactor backend for incremental rebuilds +- [#266](https://github.com/fortran-lang/fpm/pull/251): + Dependency management and `fpm update` subcommand +- [#255](https://github.com/fortran-lang/fpm/pull/255) + Setting the compiler and specifying test or app target +- [#262](https://github.com/fortran-lang/fpm/pull/262): + Add -fcoarray=single to default gfortran flags +- [#257](https://github.com/fortran-lang/fpm/pull/257): + Implement `fpm install` +- [#260](https://github.com/fortran-lang/fpm/pull/260): + Fix CI to test release build +- [#267](https://github.com/fortran-lang/fpm/pull/267): + Fix enumeration of non-library link objects +- [#268](https://github.com/fortran-lang/fpm/pull/268): + Fix dependency tracking issue in bootstrap version +- [#271](https://github.com/fortran-lang/fpm/pull/271): + Fix Windows run and test commands +- [#273](https://github.com/fortran-lang/fpm/pull/273): + Update developer documentation (manifest + command line) +- [#274](https://github.com/fortran-lang/fpm/pull/274): + Update README with link to setup-fpm github action. +- [#280](https://github.com/fortran-lang/fpm/pull/280): + Create specification for example section +- [#281](https://github.com/fortran-lang/fpm/pull/281): + Cleanup: Remove archived Rust prototype +- [#284](https://github.com/fortran-lang/fpm/pull/284): + Document model and backend for developers +- [#285](https://github.com/fortran-lang/fpm/pull/285): + CI: update naming of release binaries +- [#286](https://github.com/fortran-lang/fpm/pull/286): + Implement check for duplicated program names +- [#289](https://github.com/fortran-lang/fpm/pull/289): + Add support for same compilers as Fortran version to Haskell version +- [#291](https://github.com/fortran-lang/fpm/pull/291): + Initial implementation of `fpm build --show-model` +- [#292](https://github.com/fortran-lang/fpm/pull/292): + Specify the correct help for `fpm run -h` +- [#293](https://github.com/fortran-lang/fpm/pull/293): + Fix: missing error check after `new_package` call +- [#294](https://github.com/fortran-lang/fpm/pull/294): + Add: support for detecting .f and .F files +- [#300](https://github.com/fortran-lang/fpm/pull/300): + Remove -coarray=single option from ifort compiler default options +- [#303](https://github.com/fortran-lang/fpm/pull/303): + Fixes to source parsing +- [#304](https://github.com/fortran-lang/fpm/pull/304): + Remove note on not supported dependencies in program targets +- [#307](https://github.com/fortran-lang/fpm/pull/307): + Fix: program object file collision +- [#315](https://github.com/fortran-lang/fpm/pull/315): + Remove: -ffast-math in gfortran default release flags +- [#322](https://github.com/fortran-lang/fpm/pull/322): + Group sources by package in the model + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#230](https://github.com/fortran-lang/fpm/pull/230), + [#261](https://github.com/fortran-lang/fpm/pull/261) (WIP): + Specification of the fpm CLI. +- [#316](https://github.com/fortran-lang/fpm/pull/316) (WIP): + Update subcommand "new" to reflect the addition of support for examples + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +There are several pull requests out for evaluation. + +Only one pull request was merged in December: + +- [PR#951 Fix for ICE in atomic instruction generation](https://github.com/flang-compiler/flang/pull/951) + +### LLVM Flang + +Alexis-Perry Holby (aperry@lanl.gov) has taken over the Flang biweekly calls. +An invitation was sent to the _flang-dev_ LLVM email list on December 22nd. +Call notes will be sent to the _flang-dev_ email list and also recorded [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). + +Recent development updates: + +- Semantic analysis fix for index-names of `FORALL` statements +- Continued work on parser support for `ALLOCATE` +- Build tidying +- OpenMP semantic checks: atomic, flush +- Continued work on new driver +- Fix for list-directed REAL output editing +- Bug fixes: USE of USE of generic, crash in folding (#48437), crash in OpenMP semantic check (#48308), `IMPLICIT_NONE(EXTERNAL)` +- Implement `STORAGE_SIZE()`, `SIZEOF()`, and `C_SIZEOF()` +- OpenACC: update serial construct clauses for 3.1, enforce restriction on routine directive and clauses +- OpenMP: adding important clauses to OmpClause, task reduction clause + +## Events + +- We had our 7th Fortran Monthly call on December 15. + You can watch the recording below: + + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +- [Episode 6](https://adspthepodcast.com/2021/01/01/Episode-6.html) of the + Algorithms+Data Structures=Programs (ADSP) Podcast discussed Fortran and + the recent fortran-lang developments. +- [First year of Fortran-lang](https://medium.com/modern-fortran/first-year-of-fortran-lang-d8796bfa0067) by Milan Curcic. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/02-01-Fortran-Newsletter-February-2021.md.txt b/_sources/news/2021/02-01-Fortran-Newsletter-February-2021.md.txt new file mode 100644 index 000000000000..77e9c7851e22 --- /dev/null +++ b/_sources/news/2021/02-01-Fortran-Newsletter-February-2021.md.txt @@ -0,0 +1,198 @@ +--- +category: newsletter +date: 2021-02-01 +author: Sebastian Ehlert, Milan Curcic, Laurence Kedward, Jérémie Vandenplas, Alexis Perry-Holby +... + +# Fortran newsletter: February 2021 + +Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had a few updates to the website: + +- [#190](https://github.com/fortran-lang/fortran-lang.org/pull/190): + Add links to fpm contributing guidelines + +Ongoing work: + +- [#191](https://github.com/fortran-lang/fortran-lang.org/pull/191) (WIP): + Fix author/maintainer output in fpm registry +- [#187](https://github.com/fortran-lang/fortran-lang.org/pull/187) (WIP): + Correct compiler page and tutorial regarding Intel oneAPI and PGI to NVIDIA +- [#174](https://github.com/fortran-lang/fortran-lang.org/issues/174) (WIP): + We are searching for a representative Fortran code snippet for the website and are looking forward to suggestions. + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#303](https://github.com/fortran-lang/stdlib/pull/303), + [#301](https://github.com/fortran-lang/stdlib/pull/301), + [#294](https://github.com/fortran-lang/stdlib/pull/294): + Fixes and improvements for the manual Makefile build +- [#293](https://github.com/fortran-lang/stdlib/pull/293): + Write a more verbose introduction to building stdlib +- [#291](https://github.com/fortran-lang/stdlib/pull/291): + Export package files (CMake and pkg-config) +- [#290](https://github.com/fortran-lang/stdlib/pull/290): + Rename CMake project from stdlib to fortran_stdlib +- [#288](https://github.com/fortran-lang/stdlib/pull/288): + Follow GNU install conventions +- [#284](https://github.com/fortran-lang/stdlib/pull/284): + Required changes to be able to use `stdlib` as a subproject in CMake +- [CMake example](https://github.com/fortran-lang/stdlib-cmake-example): + Integration of the Fortran standard library in CMake projects + +Work in progress: + +- [#304](https://github.com/fortran-lang/stdlib/pull/304) (WIP): + Add supported compilers MinGW 8, 9, 10 +- [#269](https://github.com/fortran-lang/stdlib/pull/269) (WIP): + Implementation of a module for handling lists of strings +- [#271](https://github.com/fortran-lang/stdlib/pull/271) (WIP), + [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Implementation of the `stdlib_stats_distribution` modules. + It provides probability distribution and statistical functions. +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of sparse matrices. + +Don't hesitate to test and review these pull requests! + +Otherwise, ongoing discussions continue about usability of `stdlib` +([#7](https://github.com/fortran-lang/stdlib/issues/7), +[#215](https://github.com/fortran-lang/stdlib/issues/215), +[#279](https://github.com/fortran-lang/stdlib/issues/279), +[#280](https://github.com/fortran-lang/stdlib/issues/280), +[#285](https://github.com/fortran-lang/stdlib/issues/285)), +and new implementations for `stdlib` +([#135](https://github.com/fortran-lang/stdlib/issues/135), +[#212](https://github.com/fortran-lang/stdlib/issues/212), +[#234](https://github.com/fortran-lang/stdlib/issues/234), +[#241](https://github.com/fortran-lang/stdlib/issues/241), +[#258](https://github.com/fortran-lang/stdlib/issues/258), +[#259](https://github.com/fortran-lang/stdlib/issues/259), +[#262](https://github.com/fortran-lang/stdlib/issues/262), +[#268](https://github.com/fortran-lang/stdlib/issues/268), +[#277](https://github.com/fortran-lang/stdlib/issues/277)). + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [#342](https://github.com/fortran-lang/fpm/pull/342): + Fix broken link in contributing guidelines +- [#337](https://github.com/fortran-lang/fpm/pull/337): + Allow hyphens in fpm project names in "fpm new" +- [#335](https://github.com/fortran-lang/fpm/pull/335): + Fix: performance regression +- [#334](https://github.com/fortran-lang/fpm/pull/334): + Remove a name clash in the fpm testsuite + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#230](https://github.com/fortran-lang/fpm/pull/230), + [#261](https://github.com/fortran-lang/fpm/pull/261) (WIP): + Specification of the fpm CLI. +- [#316](https://github.com/fortran-lang/fpm/pull/316) (WIP): + Update subcommand "new" to reflect the addition of support for examples +- [#345](https://github.com/fortran-lang/fpm/pull/345) (WIP): + Update: fpm_backend with dynamic openmp scheduling + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +There are a number of pull requests out for evaluation. + +A total of 12 pull requests were merged in January. + +- [PR#932 Do not assume unempty derived types](https://github.com/flang-compiler/flang/pull/932) +- [PR#957 Support Prefetch Directive](https://github.com/flang-compiler/flang/pull/957) +- [PR#947 Fix gcc-10 compilaton issues](https://github.com/flang-compiler/flang/pull/947) +- [PR#948 Expand CI to run with GCC-9/10 and LLVM-9/10/11](https://github.com/flang-compiler/flang/pull/948) +- [PR#949 USE rename should check if renamed sptr is available in the scope](https://github.com/flang-compiler/flang/pull/949) +- [PR#971 Remove dwarfdump_prolog.f90 test since it is dependent on codegen](https://github.com/flang-compiler/flang/pull/971) +- [PR#940 Flang should generate debug location for limited instructions in prolog](https://github.com/flang-compiler/flang/pull/940) +- [PR#977 Update apt data before installing sphinx](https://github.com/flang-compiler/flang/pull/977) +- [PR#751 Fix for len intrinsic returning int\*8 in some cases](https://github.com/flang-compiler/flang/pull/751) +- [PR#956 Minor FileCheck pattern fixes](https://github.com/flang-compiler/flang/pull/956) +- [PR#978 Fix the readme to point to the correct flang-dev list](https://github.com/flang-compiler/flang/pull/978) +- [PR#979 Rename direct header to avoid windows conflict](https://github.com/flang-compiler/flang/pull/979) + +### LLVM Flang + +Recent development updates: + +- OpenMP semantic checks: private, firstprivate, lastprivate, Workshare Construct, `DO` loop restrictions +- Detect call to abstract interface +- OpenMP - add task_reduction clause, make reduction clause part of OmpClause +- New Driver - adding support for various options, testing improvements, standard macro pre-definitions, fixed-form detection, CMake improvements +- OpenACC - semantic checks to enforce declare directive restrictions +- Internal subprogram improvements +- OpenMP/OpenACC - Extend CheckNoBranching to handle branching provided by LabelEnforce +- Disallow `INTENT` attribute on procedure dummy arguments +- Module file improvements and bug fixes +- Add tests for procedure arguments with implicit interfaces + +Call notes will be sent to the _flang-dev_ email list and also recorded [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). + +## Events + +- We had our 8th Fortran Monthly call on January 19. + You can watch the recording below: + + + +- This year fortran-lang will be applying as a mentor organisation for [Google Summer of Code](https://summerofcode.withgoogle.com/). + We have started working on the application and the project ideas; you can join the ongoing discussion [here](https://fortran-lang.discourse.group/t/google-summer-of-code-2021/658). + If you'd like to help us flesh out the ideas, or have a project idea of your own, please join our upcoming video calls on February 9 and 16 (call info will be posted in the Discourse thread), or write directly in the Discourse thread. + If you're a student, or know students who are [eligible to participate](https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation), and you'd like to help build the Fortran ecosystem please reach out and let us know. + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/03-01-Fortran-Newsletter-March-2021.md.txt b/_sources/news/2021/03-01-Fortran-Newsletter-March-2021.md.txt new file mode 100644 index 000000000000..49b2ab2fe338 --- /dev/null +++ b/_sources/news/2021/03-01-Fortran-Newsletter-March-2021.md.txt @@ -0,0 +1,198 @@ +--- +category: newsletter +date: 2021-03-01 +author: Milan Curcic, Laurence Kedward, Ondřej Čertík +... + +# Fortran newsletter: March 2021 + +Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#191](https://github.com/fortran-lang/fortran-lang.org/pull/191): + Fix author/maintainer output in fpm registry +- [#193](https://github.com/fortran-lang/fortran-lang.org/pull/193): + Rename all instances of fortran-lang.github.io to fortran-lang.org +- [#196](https://github.com/fortran-lang/fortran-lang.org/pull/196): + Update package index +- [#199](https://github.com/fortran-lang/fortran-lang.org/pull/199): + Fix broken link for LLVM flang +- [#205](https://github.com/fortran-lang/fortran-lang.org/pull/205): + Add more electronic structure and atomistic simulation packages +- [#206](https://github.com/fortran-lang/fortran-lang.org/pull/206): + Add books to learning section +- [#208](https://github.com/fortran-lang/fortran-lang.org/pull/208): + Fix package information + +Ongoing work: + +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang +- [#207](https://github.com/fortran-lang/fortran-lang.org/issues/207) (WIP): + Correct subtitle of setting up your os + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#271](https://github.com/fortran-lang/stdlib/pull/271): + Probability Distribution and Statistical Functions--PRNG Module +- [#304](https://github.com/fortran-lang/stdlib/pull/304): + Add supported compilers MinGW 8, 9, 10 +- [#310](https://github.com/fortran-lang/stdlib/pull/310): + Extend `stdlib_ascii` module for handling character variables +- [#324](https://github.com/fortran-lang/stdlib/pull/324): + Install setuptools for MinGW builds + +Work in progress: + +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of sparse matrices. +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Implementation of the `stdlib_stats_distribution` modules. + It provides probability distribution and statistical functions. +- [#311](https://github.com/fortran-lang/stdlib/pull/311) (WIP): + Implementation of a module for handling lists of strings +- [#320](https://github.com/fortran-lang/stdlib/pull/320) (WIP): + Implement non-fancy functional string type +- [#313](https://github.com/fortran-lang/stdlib/pull/313) (WIP): + Legendre polynomials and Gaussian quadrature + +Please help improve stdlib by testing and reviewing these pull requests! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [#316](https://github.com/fortran-lang/fpm/pull/316): + Update subcommand "new" to reflect the addition of support for the example/ directory +- [#345](https://github.com/fortran-lang/fpm/pull/345): + Fpm backend with dynamic openmp scheduling +- [#346](https://github.com/fortran-lang/fpm/pull/346): + Include root dir in path to default example setup +- [#349](https://github.com/fortran-lang/fpm/pull/349): + Suggest to move the fpm version in the boostrapping process +- [#372](https://github.com/fortran-lang/fpm/pull/372): + Unify release mode calling convention + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#230](https://github.com/fortran-lang/fpm/pull/230), + [#261](https://github.com/fortran-lang/fpm/pull/261) (WIP): + Document the specification of the fpm CLI. +- [#352](https://github.com/fortran-lang/fpm/pull/352) (WIP): + Hacky fix for the help test +- [#357](https://github.com/fortran-lang/fpm/pull/357) (WIP): + Install script for Fortran fpm +- [#364](https://github.com/fortran-lang/fpm/pull/364) (WIP): + Plugin alpha version +- [#369](https://github.com/fortran-lang/fpm/pull/369) (WIP): + Separate build targets from model structure +- [#370](https://github.com/fortran-lang/fpm/pull/370) (WIP): + Update run subcommand + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### LFortran + +- The LFortran team is excited to announce that LFortran is now a [NumFOCUS sponsored project](https://numfocus.org/project/lfortran). + Please consider donating to LFortran to accelerate its development. +- 4 people contributed code in the last month: + [Gagandeep Singh](https://github.com/czgdp1807), + [Dominic Poerio](https://dompoer.io/), + [Rohit Goswami](https://rgoswami.me/), + [Ondřej Čertík](https://ondrejcertik.com/). +- Recent Merge Requests highlights: + - Complex type support (thanks to [Gagandeep Singh](https://github.com/czgdp1807)): + [!654](https://gitlab.com/lfortran/lfortran/-/merge_requests/654), + [!657](https://gitlab.com/lfortran/lfortran/-/merge_requests/657), + [!658](https://gitlab.com/lfortran/lfortran/-/merge_requests/658), + [!660](https://gitlab.com/lfortran/lfortran/-/merge_requests/660), + [!663](https://gitlab.com/lfortran/lfortran/-/merge_requests/663), + [!664](https://gitlab.com/lfortran/lfortran/-/merge_requests/664). + [!672](https://gitlab.com/lfortran/lfortran/-/merge_requests/672). + - Multiline REPL (thanks to [Dominic Poerio](https://dompoer.io/)): + [!655](https://gitlab.com/lfortran/lfortran/-/merge_requests/655), + [!662](https://gitlab.com/lfortran/lfortran/-/merge_requests/662), + [!670](https://gitlab.com/lfortran/lfortran/-/merge_requests/670), + [!674](https://gitlab.com/lfortran/lfortran/-/merge_requests/674). + - Initial support for runtime math functions: + [!667](https://gitlab.com/lfortran/lfortran/-/merge_requests/667), + [!673](https://gitlab.com/lfortran/lfortran/-/merge_requests/673), + - [!648](https://gitlab.com/lfortran/lfortran/-/merge_requests/648): Implement --show-stacktrace + - [!666](https://gitlab.com/lfortran/lfortran/-/merge_requests/666): Refactor + ImplicitCast nodes handling + - [!665](https://gitlab.com/lfortran/lfortran/-/merge_requests/665): Fixed + floating point printing + +## Events + +- We had our 9th Fortran Monthly call on February 25. + You can watch the recording below: + + + +- This year Fortran-lang applied as a mentor organization for [Google Summer of Code](https://summerofcode.withgoogle.com/). + Accepted mentor organizations will be announced on March 9. + If you're a student, or know students who are [eligible to participate](https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation), and you'd like to help build the Fortran ecosystem please reach out and let us know. + +- The 223rd meeting of the US Fortran Standards Committee is held virtually from + February 22 to March 2 (Monday and Tuesday only). + Main topics of dicussion are the planned changes for the Fortran 202X revision + of the Standard: + + - [List](https://j3-fortran.org/doc/meeting/223) of all submitted papers + - [Summary](https://github.com/j3-fortran/fortran_proposals/issues/199) of which papers were discussed each day and voting results + + If you have ideas for new improvements to the language, please propose them + [here](https://github.com/j3-fortran/fortran_proposals). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.md.txt b/_sources/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.md.txt new file mode 100644 index 000000000000..21bcc8fca1d8 --- /dev/null +++ b/_sources/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.md.txt @@ -0,0 +1,23 @@ +--- +category: newsletter +date: 2021-03-09 +author: Ondřej Čertík, Milan Curcic, Sebastian Ehlert, Laurence Kedward, Arjen Markus, Brad Richardson, Damian Rouson, Marshall Ward +... + +# Fortran-lang accepted to Google Summer of Code 2021 + +We are excited to announce that Fortran-lang has been accepted as a [Google Summer of Code (GSoC) 2021 mentoring organization](https://summerofcode.withgoogle.com/organizations/6633903353233408)! 🎉 + +You can review our project ideas +[here](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2021-Project-ideas), +and if you have any ideas that are not mentioned, please let us know. + +We are looking for students to get in touch with us and to apply. +Click [here](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2021-Student-instructions) +for instructions on how to do so. + +Our main communication channel will be the [Fortran Discourse](https://fortran-lang.discourse.group/). +There, we will announce a date for GSoC video calls where all prospective +students are welcome to join to ask questions, discuss, and brainstorm ideas. + +We look forward to a productive and fun Google Summer of Code! diff --git a/_sources/news/2021/04-01-Fortran-Newsletter-April-2021.md.txt b/_sources/news/2021/04-01-Fortran-Newsletter-April-2021.md.txt new file mode 100644 index 000000000000..a75b6375b6b4 --- /dev/null +++ b/_sources/news/2021/04-01-Fortran-Newsletter-April-2021.md.txt @@ -0,0 +1,303 @@ +--- +category: newsletter +date: 2021-04-01 +author: Sebastian Ehlert, Alexis Perry-Holby, Laurence Kedward, Milan Curcic, Ondřej Čertík +... + +# Fortran newsletter: April 2021 + +Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#229](https://github.com/fortran-lang/fortran-lang.org/pull/229): + Correct value of pi in quickstart mini-book +- [#226](https://github.com/fortran-lang/fortran-lang.org/pull/226): + Added DelaunaySparse to package list +- [#223](https://github.com/fortran-lang/fortran-lang.org/pull/223) + [#225](https://github.com/fortran-lang/fortran-lang.org/pull/225): + GSoC announcement +- [#222](https://github.com/fortran-lang/fortran-lang.org/pull/222): + Avoid unclear formulation in contributing guide +- [#221](https://github.com/fortran-lang/fortran-lang.org/pull/221): + Add information about free compiler versions +- [#216](https://github.com/fortran-lang/fortran-lang.org/pull/216): + Improve tags +- [#207](https://github.com/fortran-lang/fortran-lang.org/issues/207): + Correct subtitle of setting up your os + +Ongoing work: + +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang +- [#220](https://github.com/fortran-lang/fortran-lang.org/pull/220) (WIP): + Include learn resources to online courses + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#320](https://github.com/fortran-lang/stdlib/pull/320): + Implement non-fancy functional string type +- [#362](https://github.com/fortran-lang/stdlib/pull/362): + Fix wording in style guide for dimension attribute +- [#352](https://github.com/fortran-lang/stdlib/pull/352): + Added TOC to README +- [#346](https://github.com/fortran-lang/stdlib/pull/346) + [#356](https://github.com/fortran-lang/stdlib/pull/356): + Added to_lower, to_upper, reverse and to_title function to stdlib_string_type module + +Work in progress: + +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of sparse matrices. +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Implementation of the `stdlib_stats_distribution` modules. + It provides probability distribution and statistical functions. +- [#311](https://github.com/fortran-lang/stdlib/pull/311) (WIP): + Implementation of a module for handling lists of strings +- [#313](https://github.com/fortran-lang/stdlib/pull/313) (WIP): + Legendre polynomials and Gaussian quadrature +- [#333](https://github.com/fortran-lang/stdlib/pull/333) (WIP): + Provide abstract base class for a string object +- [#336](https://github.com/fortran-lang/stdlib/pull/336) (WIP): + Add functions to convert integer/logical values to character values +- [#343](https://github.com/fortran-lang/stdlib/pull/343) (WIP): + Implement strip and chomp as supplement to trim +- [#349](https://github.com/fortran-lang/stdlib/pull/349) (WIP): + Simplify test makefile +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#355](https://github.com/fortran-lang/stdlib/pull/355) (WIP): + Implement clip function +- [#359](https://github.com/fortran-lang/stdlib/pull/359) (WIP): + Add general contributing guidelines to stdlib +- [#360](https://github.com/fortran-lang/stdlib/pull/360) (WIP): + Summarize build toolchain workflow and implied rules +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Add sort to stdlib_string_type module +- [#367](https://github.com/fortran-lang/stdlib/pull/367) (WIP): + Add Intel compiler workflow for OSX + +Please help improve stdlib by testing and reviewing these pull requests! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [Alpha release version 0.2.0](https://github.com/fortran-lang/fpm/releases/tag/v0.2.0) +- [Fpm is now available on conda-forge](https://github.com/conda-forge/fpm-feedstock) +- [#352](https://github.com/fortran-lang/fpm/pull/352): + Hacky fix for the help test +- [#357](https://github.com/fortran-lang/fpm/pull/357): + Install script for Fortran fpm +- [#369](https://github.com/fortran-lang/fpm/pull/369): + Separate build targets from model structure +- [#370](https://github.com/fortran-lang/fpm/pull/370): + Update run subcommand +- [#377](https://github.com/fortran-lang/fpm/pull/377): + Add explicit include-dir key to manifest +- [#378](https://github.com/fortran-lang/fpm/pull/378): + Add ford-compatible documentation to fpm_strings.f90 +- [#386](https://github.com/fortran-lang/fpm/pull/386): + Replace deprecated flags in debug_fortran option +- [#390](https://github.com/fortran-lang/fpm/pull/390) + [#407](https://github.com/fortran-lang/fpm/pull/407): + Implement --flag option for Fortran fpm +- [#397](https://github.com/fortran-lang/fpm/pull/397): + Add Conda install instructions to the README +- [#398](https://github.com/fortran-lang/fpm/pull/398): + Minor fix: for setting executable link libraries +- [#402](https://github.com/fortran-lang/fpm/pull/402): + Add fpm description and reorganize the README intro +- [#404](https://github.com/fortran-lang/fpm/pull/404): + Correct join for null input +- [#409](https://github.com/fortran-lang/fpm/pull/409): + Give Programs Access to Code in Subdirectories +- [#414](https://github.com/fortran-lang/fpm/pull/414): + Add few important links to README +- [#412](https://github.com/fortran-lang/fpm/pull/412): + Duplicate module definitions +- [#413](https://github.com/fortran-lang/fpm/pull/413): + Add: omp_lib to intrinsic modules list +- [#419](https://github.com/fortran-lang/fpm/pull/419): + Split workflow for Haskell and Fortran fpm + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#364](https://github.com/fortran-lang/fpm/pull/364) (WIP): + Plugin alpha version +- [#420](https://github.com/fortran-lang/fpm/pull/420) (WIP): + Phase out Haskell fpm +- [fpm-haskell](https://github.com/fortran-lang/fpm-haskell) (WIP): + Separate repository for the Haskell fpm version + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +A total of 10 pull requests were merged in February. + +- [PR#996 tests: one test case supporting PR #966](https://github.com/flang-compiler/flang/pull/996) +- [PR#968 Fix a clash between CONTIGUOUS and SAVE attribute in flang (issue #673)](https://github.com/flang-compiler/flang/pull/968) +- [PR#955 Do not issue an error when character kind 2 is used](https://github.com/flang-compiler/flang/pull/955) +- [PR#975 Add the option to build release_11x branch of llvm with Github Actions](https://github.com/flang-compiler/flang/pull/975) +- [PR#974 Fix hash collision handling routine that didn't work due to a fatal mistake (issue #960).](https://github.com/flang-compiler/flang/pull/974) +- [PR#1000 Add ccache support to GitHub Actions](https://github.com/flang-compiler/flang/pull/1000) +- [PR#952 Array debugging support with upgraded DISubrange](https://github.com/flang-compiler/flang/pull/952) +- [PR#1002 Fix for regression introduced by PR #922 (issue #995)](https://github.com/flang-compiler/flang/pull/1002) +- [PR#985 add asprintf](https://github.com/flang-compiler/flang/pull/985) +- [PR#966 Fixes to address cp2k compilation and runtime issues](https://github.com/flang-compiler/flang/pull/966) + +A total of 8 pull requests were merged in March. + +- [PR#963 Fix errors on array initialisation with an implied do loop](https://github.com/flang-compiler/flang/pull/963) +- [PR#1007 fix for issue #1006: stop passing unused uninitialized value](https://github.com/flang-compiler/flang/pull/1007) +- [PR#1004 Nested implied do loop fix for real numbers](https://github.com/flang-compiler/flang/pull/1004) +- [PR#710 Test case for capturing procedure pointers to OpenMP parallel regions](https://github.com/flang-compiler/flang/pull/710) +- [PR#561 flang2: corrected fix for #424](https://github.com/flang-compiler/flang/pull/561) +- [PR#778 Fixing NCAR test problems with error tolerance lower than E-12.](https://github.com/flang-compiler/flang/pull/778) +- [PR#1010 LLVM 12 upgrade](https://github.com/flang-compiler/flang/pull/1010) +- [PR#1012 Remove release_90 from Github Actions](https://github.com/flang-compiler/flang/pull/1012) + +### LLVM Flang + +Recent development updates: + +- New Driver: + - Add options for -fdefault\* and -flarge-sizes + - Refine tests for module search directories + - Add -fdebug-dump-parsing-log + - Add -fdebug-module-writer option + - Add debug dump, measure-parse-tree and pre-fir-tree options + - Add -Xflang and make -test-io a frontend-only flang + - Add -J and -module-dir to f18 driver + - Fix -fdefault\* family bug +- FIR (Fortran IR - a dialect of MLIR): + - Add diagnostic tests for FIR ops verifier + - Add FIR Types parser diagnostic tests + - Upstream the pre-FIR tree changes (The PFT has been updated to support Fortran 77) + - Update flang test tool support classes + - Add zero_bits, array value, and other operations + - Upstream utility function valueHasFirAttribute() to be used in subsequent merges +- OpenMP - add semantic checks for: + - OpenMP 4.5 - 2.7.1 Do Loop restrictions for Threadprivate + - Occurrence of multiple list items in aligned clause for simd directive + - Flang OpenMP 4.5 - 2.15.3.6 Reduction clause + - 2.15.4.2 - Copyprivate clause + - 2.15.3.4 - Firstprivate clause + - 2.15.3.5 - Lastprivate clause +- Update character tests to use gtest +- Adaptations to MLIR API changes +- Fix call to CHECK() on overriding an erroneous type-bound procedure +- Handle type-bound procedures with alternate returns +- Runtime: implement INDEX intrinsic function +- Fix compilation on MinGW-w64 +- Extension: forward refs to dummy args under IMPLICIT NONE +- Detect circularly defined interfaces of procedures +- Implement the related character intrinsic functions SCAN and VERIFY + +Call notes will be sent to the _flang-dev_ email list and also recorded [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). + +### LFortran + +- LFortran is participating in GSoC under the NumFOCUS and Fortran-lang umbrella, if you are interested, please apply: [https://gitlab.com/lfortran/lfortran/-/wikis/GSoC-2021-Ideas](https://gitlab.com/lfortran/lfortran/-/wikis/GSoC-2021-Ideas) +- 7 people contributed code in the last month: + [Gagandeep Singh](https://github.com/czgdp1807), + [Dominic Poerio](https://dompoer.io/), + [Himanshu Pandey](https://github.com/hp77-creator), + [Thirumalai Shaktivel](https://github.com/Thirumalai-Shaktivel), + [Scot Halverson](https://github.com/scothalverson), + [Rohit Goswami](https://rgoswami.me/), + [Ondřej Čertík](https://ondrejcertik.com/). +- 114 Merge Requests were [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged) in the past month, highlights + - macOS support (both Intel and ARM), compilation and development of + LFortran itself (stacktraces work also) + - Initial implentation of: modules (modfiles, dependencies, ...), + interfaces, integer/real kinds, public/private attribute, derived types, + strings, variable initializations, pointers, modules + - Many other fixes + +LFortran is still in pre-alpha stage, but we are making rapid progress towards +getting it to compile more Fortran features. We are looking for contributors, +if you are interested, please get in touch and we will help you get started. +We can be contacted at Zulip Chat, mailinglist or GitLab issues (see +https://lfortran.org for links to all three). + +## Events + +- We had our 10th Fortran Monthly call on March 24. + You can watch the recording below: + + + +- This year Fortran-lang is a mentor organization for [Google Summer of Code](https://summerofcode.withgoogle.com/organizations/6633903353233408/). + If you're a student, or know students who are [eligible to participate](https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation), and you'd like to help build the Fortran ecosystem please reach out and let us know. + The student application window opened on March 29 and will close on April 13 at 14:00 Eastern Time. + +- The 223rd meeting of the US Fortran Standards Committee concluded on March 2. + Main topics of dicussion were the planned changes for the Fortran 202X revision of the Standard. + Here's the [list of all submitted papers](https://j3-fortran.org/doc/meeting/223), + and the [summary](https://github.com/j3-fortran/fortran_proposals/issues/199) + of the papers discussed and voting results. + The committee also welcomed a new member, Milan Curcic ([@milancurcic](https://github.com/milancurcic)), + who is the voting alternate to Gary Klimowicz ([@gklimowicz](https://github.com/gklimowicz)). + + If you have ideas for new improvements to the language, please propose them + [here](https://github.com/j3-fortran/fortran_proposals). + +- Registration is open for the upcoming free webinar on + [Fortran for High Performance Computing](https://register.gotowebinar.com/register/7343048137688004108). + The webinar is organized by [Excellerat](https://www.excellerat.eu/) + and will be presented by Wadud Miah ([@wadudmiah](https://github.com/wadudmiah)) from the University of Southampton. + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/04-20-First-Year.md.txt b/_sources/news/2021/04-20-First-Year.md.txt new file mode 100644 index 000000000000..c8d4a3883650 --- /dev/null +++ b/_sources/news/2021/04-20-First-Year.md.txt @@ -0,0 +1,34 @@ +--- +category: newsletter +date: 2021-04-20 +author: Ondřej Čertík, Milan Curcic, Brad Richardson, Laurence Kedward +... + +# First year of the Fortran website + +In April 2020 we created a website for the Fortran language at +[fortran-lang.org](https://fortran-lang.org/). In exactly one year, it grew to +be the first result when you search "Fortran" in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran). + +The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us. + +Here are some of the ways that you can participate: + +- [Fortran Discourse](https://fortran-lang.discourse.group/) discussion forum +- Contribute to [fpm](https://github.com/fortran-lang/fpm/), + [stdlib](https://github.com/fortran-lang/stdlib/), + the [Fortran website](https://github.com/fortran-lang/fortran-lang.org) or + any other project +- Join our monthly Fortran call (see announcements at Discourse) +- Contribute to the Fortran monthly newsletter +- Follow our Fortran Twitter account + [@fortranlang](https://twitter.com/fortranlang) + +Thank you everybody for your support so far. We are looking forward for the +second year! diff --git a/_sources/news/2021/05-01-Fortran-Newsletter-May-2021.md.txt b/_sources/news/2021/05-01-Fortran-Newsletter-May-2021.md.txt new file mode 100644 index 000000000000..e9f64b3da08c --- /dev/null +++ b/_sources/news/2021/05-01-Fortran-Newsletter-May-2021.md.txt @@ -0,0 +1,239 @@ +--- +category: newsletter +date: 2021-05-01 +author: Sebastian Ehlert, Alexis Perry-Holby, Milan Curcic, Ondřej Čertík, Laurence Kedward +... + +# Fortran newsletter: May 2021 + +Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#244](https://github.com/fortran-lang/fortran-lang.org/pull/244): + Add a first year announcement +- [#236](https://github.com/fortran-lang/fortran-lang.org/pull/236): + Add dl_poly_4 to package index +- [#220](https://github.com/fortran-lang/fortran-lang.org/pull/220): + Include learn resources to online courses + +Ongoing work: + +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246) (WIP): + Transferring fortran90.org “Fortran Best Practise” into a mini-book + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#391](https://github.com/fortran-lang/stdlib/pull/391): + Add issue templates +- [#388](https://github.com/fortran-lang/stdlib/pull/388): + Changed filenames for bitset tests +- [#384](https://github.com/fortran-lang/stdlib/pull/384): + Implement starts_with and ends_with functions +- [#367](https://github.com/fortran-lang/stdlib/pull/367): + Add Intel compiler workflow for OSX +- [#360](https://github.com/fortran-lang/stdlib/pull/360): + Summarize build toolchain workflow and implied rules +- [#343](https://github.com/fortran-lang/stdlib/pull/343): + Implement strip and chomp as supplement to trim +- [#336](https://github.com/fortran-lang/stdlib/pull/336): + Add functions to convert integer/logical values to character values + +Work in progress: + +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of sparse matrices. +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Implementation of the `stdlib_stats_distribution` modules. + It provides probability distribution and statistical functions. +- [#311](https://github.com/fortran-lang/stdlib/pull/311) (WIP): + Implementation of a module for handling lists of strings +- [#313](https://github.com/fortran-lang/stdlib/pull/313) (WIP): + Legendre polynomials and Gaussian quadrature +- [#333](https://github.com/fortran-lang/stdlib/pull/333) (WIP): + Provide abstract base class for a string object +- [#349](https://github.com/fortran-lang/stdlib/pull/349) (WIP): + Simplify test makefile +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#355](https://github.com/fortran-lang/stdlib/pull/355) (WIP): + Implement clip function +- [#359](https://github.com/fortran-lang/stdlib/pull/359) (WIP): + Add general contributing guidelines to stdlib +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Add sort to stdlib_string_type module +- [#372](https://github.com/fortran-lang/stdlib/pull/372) (WIP): + Correct implementation of to_title +- [#386](https://github.com/fortran-lang/stdlib/pull/386) (WIP): + Start the addition of the module stdlib_sorting + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in `fpm`: + +- [#420](https://github.com/fortran-lang/fpm/pull/420): + Phase out Haskell fpm +- [#468](https://github.com/fortran-lang/fpm/pull/468): + Identify OpenBSD +- [#465](https://github.com/fortran-lang/fpm/pull/465): + Fix typo in README +- [#442](https://github.com/fortran-lang/fpm/pull/442): + Use lib instead of ar on Windows +- [#440](https://github.com/fortran-lang/fpm/pull/440): + Minor edits to README +- [#438](https://github.com/fortran-lang/fpm/pull/438): + Add external-modules key to build table for non-fpm modules +- [#437](https://github.com/fortran-lang/fpm/pull/437): + Remove coarray single from default Intel flags +- [#433](https://github.com/fortran-lang/fpm/pull/433): + Fix to allow compiling C with Intel CC +- [#431](https://github.com/fortran-lang/fpm/pull/431): + Use different compiler flags on differnt platforms for Intel +- [#429](https://github.com/fortran-lang/fpm/pull/429): + Use wget if curl is missing in install.sh + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#364](https://github.com/fortran-lang/fpm/pull/364) (WIP): + Plugin alpha version +- [#423](https://github.com/fortran-lang/fpm/pull/423) (WIP): + Use default instead of master to reference the repository HEAD +- [#444](https://github.com/fortran-lang/fpm/pull/444) (WIP): + Allow to find include files / modules in CPATH environment variable +- [#449](https://github.com/fortran-lang/fpm/pull/449) (WIP): + Response files with ar on Windows +- [#450](https://github.com/fortran-lang/fpm/pull/450) (WIP): + Remove coarray flag from intel debug settings +- [#451](https://github.com/fortran-lang/fpm/pull/451) (WIP): + Refactor: use objects to represent compilers and archiver + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Classic Flang + +A total of 5 pull requests were merged in April. + +- [PR#1021 Switch to new LLVM License](https://github.com/flang-compiler/flang/pull/1021) +- [PR#1025 runtime: register atfork handler to re-initialize internal flangrti locks at fork](https://github.com/flang-compiler/flang/pull/1025) +- [PR#1026 Test case update for #895](https://github.com/flang-compiler/flang/pull/1026) +- [PR#1030 Update README.md](https://github.com/flang-compiler/flang/pull/1030) +- [PR#1034 Github Action use the prebuilt clang to build flang](https://github.com/flang-compiler/flang/pull/1034) + +### LLVM Flang + +Recent development updates: + +- OpenMP + - [OPENMP5.1]Initial support for novariants clause. + - [OPENMP5.1]Initial support for nocontext clause. + - Add functionality to check "close nesting" of regions, which can be used for Semantic checks + - [OpenMP5.1] Initial support for masked directive and filter clause + - Modify semantic check for nesting of `ordered` regions to include `close` nesting check. + - Remove `OmpEndLoopDirective` handles from code. + - Add General Semantic Checks for Allocate Directive +- New Driver + - Add options for -Werror + - Modify the existing test cases that use -Mstandard in f18, to use -pedantic and %flang_fc1 to share with the new driver + - Add support for `-cpp/-nocpp` + - Fix `-fdebug-dump-provenance` + - Add debug options not requiring semantic checks + - Remove `%flang-new` from the LIT configuration + - Update the regression tests to use the new driver when enabled + - Add support for `-fget-definition` +- Move .f77 to the list of fixed-form file extensions +- Runtime + - Implement reductions + - Implement numeric intrinsic functions + - TRANSFER() intrinsic function + - RANDOM_NUMBER, RANDOM_SEED, RANDOM_INIT + - Implement IPARITY, PARITY, and FINDLOC reductions +- Fix unit test failure on POWER +- Improve constant folding for type parameter inquiries +- Check for conflicting BIND(C) names +- Enforce a limit on recursive PDT instantiations +- Accept & fold IEEE_SELECTED_REAL_KIND +- Define missing & needed IEEE_ARITHMETIC symbols +- Handle instantiation of procedure pointer components +- Fix checking of argument passing for parameterized derived types +- Fix spurious errors from runtime derived type table construction +- Check for attributes specific to dummy arguments +- Handle structure constructors with forward references to PDTs + +Call notes will be sent to the _flang-dev_ email list and also recorded [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). + +### LFortran + +- 98 Merge Requests merged in April +- Working towards compiling the [SNAP](https://github.com/lanl/SNAP) proxy app ([#313](https://gitlab.com/lfortran/lfortran/-/issues/313)): + - Code can be parsed to AST and transformed back to source code which compiles with other compilers and works + - About 3rd of the files can be transformed from AST to ASR and the modules saved +- Other improvements: + - Runtime library (more functions work) + - Nested functions + - Derived types + +## Events + +- We had our 11th Fortran Monthly call on April 22. + You can watch the recording below: + + + +- Wadud Miah ([@wadudmiah](https://github.com/wadudmiah)) from the University of Southampton presented a webinar on Fortran for High Performance Computing, organized by [Excellerat](https://www.excellerat.eu/). You can find the slides and the recording [here](https://services.excellerat.eu/viewevent/39). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/05-18-Welcome-GSoC-students.md.txt b/_sources/news/2021/05-18-Welcome-GSoC-students.md.txt new file mode 100644 index 000000000000..a9e49cd9b4a7 --- /dev/null +++ b/_sources/news/2021/05-18-Welcome-GSoC-students.md.txt @@ -0,0 +1,43 @@ +--- +category: newsletter +date: 2021-05-18 +author: Milan Curcic, Ondřej Čertík, Sebastian Ehlert, Laurence Kedward, Arjen Markus, Brad Richardson +... + +# Fortran-lang welcomes new students to Google Summer of Code 2021 + +We're happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program: + +- [Aman Godara](https://github.com/aman-godara) will work on strings in the + [Fortran Standard Library](https://github.com/fortran-lang/stdlib). Aman's + mentors will be [Sebastian Ehlert](https://github.com/awvwgk) and + [Milan Curcic](https://github.com/milancurcic). +- [Rohit Goswami](https://github.com/haozeke) will work on the + [LFortran](https://lfortran.org) compiler, specifically toward the capability + to compile a complex physics package. Rohit's mentor will be + [Ondřej Čertík](https://github.com/certik). +- [Jakub Jelínek](https://github.com/kubajj) will work on handling compiler + arguments in the + [Fortran Package Manager](https://github.com/fortran-lang/fpm). Jakub's + mentors will be [Laurence Kedward](https://github.com/lkedward) and + [Brad Richardson](https://github.com/everythingfunctional). +- [Chetan Karwa](https://github.com/chetankarwa) will work on the linked list + support in the + [Fortran Standard Library](https://github.com/fortran-lang/stdlib). Chetan's + mentors will be [Arjen Markus](https://github.com/arjenmarkus) and + [Milan Curcic](https://github.com/milancurcic). +- [Thirumalai Shaktivel](https://gitlab.com/Thirumalai-Shaktivel) will work + on the Abstract Syntax Tree generation in the [LFortran](https://lfortran.org) + compiler. Thirumalai's mentor will be + [Ondřej Čertík](https://github.com/certik). +- [Gagandeep Singh](https://github.com/czgdp1807) will work on the support + of arrays and allocatables in the [LFortran](https://lfortran.org) compiler. + Gagandeep's mentor will be [Ondřej Čertík](https://github.com/certik). + Gagandeep was accepted under the NumFOCUS application to GSoC. + +This is the first year that Fortran-lang applied for Google Summer of Code, and +we're beyond excited that our project was allocated this many student slots. +You can follow students' progress in their weekly reports in the [Fortran Discourse](https://fortran-lang.discourse.group/) forum. + +Thank you, Google, for your support of Fortran and open source software! diff --git a/_sources/news/2021/06-01-Fortran-Newsletter-June-2021.md.txt b/_sources/news/2021/06-01-Fortran-Newsletter-June-2021.md.txt new file mode 100644 index 000000000000..692143a2f58e --- /dev/null +++ b/_sources/news/2021/06-01-Fortran-Newsletter-June-2021.md.txt @@ -0,0 +1,197 @@ +--- +category: newsletter +date: 2021-06-01 +author: Sebastian Ehlert, Milan Curcic, Laurence Kedward, Ondřej Čertík +... + +# Fortran newsletter: June 2021 + +Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#269](https://github.com/fortran-lang/fortran-lang.org/pull/269): + Grammar and typo fixes in main page and quickstart minibook +- [#261](https://github.com/fortran-lang/fortran-lang.org/pull/261): + Script for summarizing PRs +- [#259](https://github.com/fortran-lang/fortran-lang.org/pull/259): + MapTran3D, RPNcalc, Gemini3D and Blocktran were added to the package index +- [#253](https://github.com/fortran-lang/fortran-lang.org/pull/253): + Fixed grammar in Easy to learn section + +Ongoing work: + +- [#255](https://github.com/fortran-lang/fortran-lang.org/pull/255) (WIP): + Quickstart edits +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246) (WIP): + Transferring fortran90.org “Fortran Best Practise” into a mini-book +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#417](https://github.com/fortran-lang/stdlib/pull/417): + Add GCC-11 to workflow +- [#415](https://github.com/fortran-lang/stdlib/pull/415): + Corrected Ubuntu version +- [#407](https://github.com/fortran-lang/stdlib/pull/407): + Changed to_title to to_sentence and implemented correct to_title +- [#359](https://github.com/fortran-lang/stdlib/pull/359): + Add general contributing guidelines to stdlib +- [#355](https://github.com/fortran-lang/stdlib/pull/355): + Implement clip function + +Work in progress: + +- [#420](https://github.com/fortran-lang/stdlib/pull/420) (WIP): + First implementation of real-valued linspace. +- [#419](https://github.com/fortran-lang/stdlib/pull/419) (WIP): + Allow modification of install directory for module files +- [#418](https://github.com/fortran-lang/stdlib/pull/418) (WIP): + Improved support for NAG +- [#414](https://github.com/fortran-lang/stdlib/pull/414) (WIP): + Implemented intelligent slice functionality +- [#408](https://github.com/fortran-lang/stdlib/pull/408) (WIP): + Addition of the stdlib_sorting module +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Add sort to stdlib_string_type module +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#333](https://github.com/fortran-lang/stdlib/pull/333) (WIP): + Provide abstract base class for a string object +- [#313](https://github.com/fortran-lang/stdlib/pull/313) (WIP): + Legendre polynomials and Gaussian quadrature +- [#311](https://github.com/fortran-lang/stdlib/pull/311) (WIP): + Implementation of a module for handling lists of strings +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP), + [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP), + [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP), + [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Implementation of the `stdlib_stats_distribution` modules. + It provides probability distribution and statistical functions. +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of sparse matrices. + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here is what is new in _fpm_: + +- [#450](https://github.com/fortran-lang/fpm/pull/450): + Remove coarray flag from intel debug settings +- [#423](https://github.com/fortran-lang/fpm/pull/423): + Use default instead of master to reference the repository HEAD + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#483](https://github.com/fortran-lang/fpm/pull/483) (WIP): + Allow fpm to change the working directory +- [#451](https://github.com/fortran-lang/fpm/pull/451) (WIP): + Refactor: use objects to represent compilers and archiver +- [#449](https://github.com/fortran-lang/fpm/pull/449) (WIP): + Response files with ar on Windows +- [#444](https://github.com/fortran-lang/fpm/pull/444) (WIP): + Allow to find include files / modules in CPATH environment variable +- [#364](https://github.com/fortran-lang/fpm/pull/364) (WIP): + Plugin alpha version + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### LFortran + +- 39 Merge Requests [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&state=merged) +- Features that can now be compiled (in the LLVM backend): + - More nested functions and callbacks (the context is properly propagated) + - Runtime: size, lbound, ubound + - Return statement + - More array operations and declarations + - Array initializer expressions +- Features in ASR only (semantics): + - Runtime intrinsics: min, max, allocated +- Features in AST only (syntax): + - Co-arrays + - Methods + - Enumerations + - Attributes in `use` + - BOZ constants + - Forall + - More interfaces + - Import + - Implicit statements + - Select type + +The following people contributed code in May 2021: + +- Gagandeep Singh ([@czgdp1807](https://github.com/czgdp1807)) +- Thirumalai Shaktivel ([@Thirumalai-Shaktivel](https://github.com/Thirumalai-Shaktivel)) +- Ondřej Čertík ([@certik](https://github.com/certik)) +- Dominic Poerio ([@dpoe](https://gitlab.com/dpoe)) + +## Events + +- We had our 12th Fortran Monthly call on May 20. + You can watch the recording below: + + + +- Google Summer of Code program has announced the allocation of students to each project. + Fortran-lang received six studens (one through [NumFOCUS](https://numfocus.org/)) who will work across three subprojects: stdlib, fpm, and LFortran. + Congratulations and welcome to students + [Aman Godara](https://github.com/aman-godara), + [Rohit Goswami](https://github.com/haozeke), + [Jakub Jelínek](https://github.com/kubajj), + [Chetan Karwa](https://github.com/chetankarwa), + [Thirumalai Shaktivel](https://gitlab.com/Thirumalai-Shaktivel), and + [Gagandeep Singh](https://github.com/czgdp1807). + Read the full post [here](https://fortran-lang.org/newsletter/2021/05/18/Welcome-GSoC-students/). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/07-01-Fortran-Newsletter-July-2021.md.txt b/_sources/news/2021/07-01-Fortran-Newsletter-July-2021.md.txt new file mode 100644 index 000000000000..1d8839652396 --- /dev/null +++ b/_sources/news/2021/07-01-Fortran-Newsletter-July-2021.md.txt @@ -0,0 +1,214 @@ +--- +category: newsletter +date: 2021-07-01 +author: Laurence Kedward, Sebastian Ehlert, Ondřej Čertík, Zachary Moon, Milan Curcic +... + +## Fortran newsletter: July 2021 + +Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#276](https://github.com/fortran-lang/fortran-lang.org/pull/276): + Add LATTE tight-binding molecular dynamics code to package index +- [#275](https://github.com/fortran-lang/fortran-lang.org/pull/275): + Add crest program to package index +- [#255](https://github.com/fortran-lang/fortran-lang.org/pull/255): + Quickstart edits +- [#273](https://github.com/fortran-lang/fortran-lang.org/pull/273): + Add the SNaC package to package index +- [#272](https://github.com/fortran-lang/fortran-lang.org/pull/272): + Add QUICK to package index + +Ongoing work: + +- [#277](https://github.com/fortran-lang/fortran-lang.org/pull/277) (WIP): + Add projects for Fortran-lua interfacing to package index +- [#274](https://github.com/fortran-lang/fortran-lang.org/pull/274) (WIP): + Add convert_FORTRAN_case formatter to package index +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246) (WIP): + Transferring fortran90.org "Fortran Best Practices" into a mini-book +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Draft: Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in `stdlib`: + +- [#313](https://github.com/fortran-lang/stdlib/pull/313): + Legendre polynomials and gaussian quadrature +- [#432](https://github.com/fortran-lang/stdlib/pull/432): + Outer product +- [#439](https://github.com/fortran-lang/stdlib/pull/439): + Reduce time spent on sorting tests +- [#440](https://github.com/fortran-lang/stdlib/pull/440): + Make maximum rank an option +- [#433](https://github.com/fortran-lang/stdlib/pull/433): + Implemented low level find function for string matching +- [#414](https://github.com/fortran-lang/stdlib/pull/414): + Implemented intelligent slice functionality +- [#428](https://github.com/fortran-lang/stdlib/pull/428): + Fix issue with stdlib_sorting +- [#419](https://github.com/fortran-lang/stdlib/pull/419): + Allow modification of install directory for module files +- [#430](https://github.com/fortran-lang/stdlib/pull/430): + Remove support for GCC 7 and 8 +- [#424](https://github.com/fortran-lang/stdlib/pull/424): + Add separate logical kind parameters + +Work in progress: + +- [#445](https://github.com/fortran-lang/stdlib/pull/445) (WIP): + Add `disp` function to display your data +- [#444](https://github.com/fortran-lang/stdlib/pull/444) (WIP): + Add `format_string` to format other type to string +- [#441](https://github.com/fortran-lang/stdlib/pull/441) (WIP): + Implement pad function +- [#437](https://github.com/fortran-lang/stdlib/pull/437) (WIP): + [FPM] add fpm support +- [#436](https://github.com/fortran-lang/stdlib/pull/436) (WIP): + Implement low-level replace_all function +- [#426](https://github.com/fortran-lang/stdlib/pull/426) (WIP): + Addition of a subroutine to compute the median of array elements +- [#420](https://github.com/fortran-lang/stdlib/pull/420) (WIP): + First implementation of real-valued linspace. +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#333](https://github.com/fortran-lang/stdlib/pull/333) (WIP): + Provide abstract base class for a string object +- [#311](https://github.com/fortran-lang/stdlib/pull/311) (WIP): + String list new +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP): + Probability Distribution and Statistical Functions -- Uniform Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format +- [#157](https://github.com/fortran-lang/stdlib/pull/157) (WIP): + Update CMAKE files + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +**Alpha release update:** Last month saw the release of **v0.3.0** for _fpm_ which includes a number of [new features and bug fixes](https://github.com/fortran-lang/fpm/releases/tag/v0.3.0). + +Here is what is new in _fpm_: + +- [#504](https://github.com/fortran-lang/fpm/pull/504): + install.sh, README.md: Update version number, single source file extension +- [#501](https://github.com/fortran-lang/fpm/pull/501): + Bump version for new release +- [#491](https://github.com/fortran-lang/fpm/pull/491): + Catch execute_command_line errors and print useful messages +- [#500](https://github.com/fortran-lang/fpm/pull/500): + Allow reading version number from file +- [#497](https://github.com/fortran-lang/fpm/pull/497): + correct for equal sign in flag options to fix #495 +- [#449](https://github.com/fortran-lang/fpm/pull/449): + Response files with ar on Windows +- [#490](https://github.com/fortran-lang/fpm/pull/490): + Minor fix to module parsing +- [#489](https://github.com/fortran-lang/fpm/pull/489): + Redirect output when searching for archiver +- [#484](https://github.com/fortran-lang/fpm/pull/484): + Add support for invoking simple plugins +- [#483](https://github.com/fortran-lang/fpm/pull/483): + Allow fpm to change the working directory + +Work in progress: + +- [First beta release](https://github.com/fortran-lang/fpm/milestone/1) (WIP): + First feature-complete release of the Fortran implementation. +- [#505](https://github.com/fortran-lang/fpm/pull/505) (WIP): + quiet mode for #502 +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Draft - Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### LFortran + +- 49 Merge Requests [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&state=merged) +- Highlights + - Improvements to array support in the LLVM backend and at the ASR level: + array sections, allocatable arrays, and other improvements + - Many parser fixes (`lfortran fmt` works on more projects): block data, + common block, equivalence, custom operator declaration, flush, critical and + event statements + - More runtime functions: minval, maxval, real, sum, abs + - Optional human readable mod files + +## Events + +- We had our 13th Fortran Monthly call on June 15. + You can watch the recording below: + + + +- Joint J3/WG5 (Fortran Standards Committees) meeting was held virtually from June 21-30 (Mondays and Wednesdays only). You can find all the papers that were discussed [here](https://j3-fortran.org/doc/meeting/224). Highlights from the meeting: + + - Conditional expressions syntax for Fortran 202X ([paper](https://j3-fortran.org/doc/year/21/21-157r2.txt)). + - Protected components specifications and syntax for Fortran 202X ([paper](https://j3-fortran.org/doc/year/21/21-168.txt)). + - The generics feature planned for Fortran 202Y was discussed at depth ([paper](https://j3-fortran.org/doc/year/21/21-144r4.txt)). + - Jeff Hammond (NVidia Corporation) is the new J3 member as a voting alternate to Bryce Adelstein-Lelbach. + - Target year for Fortran 202X is 2023, subject to change. + +- FortranCon 2021 will be held virtually from September 23-24, 2021. For more information, visit the [FortranCon website](https://tcevents.chem.uzh.ch/event/14/). + +- Work has started for our Google Summer of Code program. You read about our students and their progress so far on Discourse: + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/08-01-Fortran-Newsletter-August-2021.md.txt b/_sources/news/2021/08-01-Fortran-Newsletter-August-2021.md.txt new file mode 100644 index 000000000000..24e88bfd5cc3 --- /dev/null +++ b/_sources/news/2021/08-01-Fortran-Newsletter-August-2021.md.txt @@ -0,0 +1,237 @@ +--- +category: newsletter +date: 2021-08-01 +author: Milan Curcic, Ondřej Čertík, Laurence Kedward +... + +# Fortran newsletter: August 2021 + +Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#281](https://github.com/fortran-lang/fortran-lang.org/pull/281): + July newsletter +- [#274](https://github.com/fortran-lang/fortran-lang.org/pull/274): + Add `convert_FORTRAN_case` formatter to package index +- [#277](https://github.com/fortran-lang/fortran-lang.org/pull/277): + Add projects for Fortran-lua interfacing to package index +- [#284](https://github.com/fortran-lang/fortran-lang.org/pull/284): + PRs script updates +- [#286](https://github.com/fortran-lang/fortran-lang.org/pull/286): + Installation process for GFortran on OpenBSD +- [#288](https://github.com/fortran-lang/fortran-lang.org/pull/288): + Add Flatiron institute multipole libraries to the package index +- [#289](https://github.com/fortran-lang/fortran-lang.org/pull/289): + Small fix in packages index +- [#291](https://github.com/fortran-lang/fortran-lang.org/pull/291): + Bump addressable from 2.7.0 to 2.8.0 +- [#293](https://github.com/fortran-lang/fortran-lang.org/pull/293): + add Apogee and Edinburgh compilers +- [#290](https://github.com/fortran-lang/fortran-lang.org/pull/290): + Add arrayfire-fortran to package index +- [#294](https://github.com/fortran-lang/fortran-lang.org/pull/294): + compilers: use more objective tone +- [#296](https://github.com/fortran-lang/fortran-lang.org/pull/296): + my software with at least 5 stars +- [#297](https://github.com/fortran-lang/fortran-lang.org/pull/297): + Fix insecure workflow. + +Ongoing work: + +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246) (WIP): + Transferring fortran90.org "Fortran Best Practices" into a mini-book +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Draft: Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#436](https://github.com/fortran-lang/stdlib/pull/436): + implemented low-level `replace_all` function +- [#454](https://github.com/fortran-lang/stdlib/pull/454): + added `stdlib_math` to specs/index.md +- [#453](https://github.com/fortran-lang/stdlib/pull/453): + implemented count function +- [#441](https://github.com/fortran-lang/stdlib/pull/441): + implemented pad function +- [#456](https://github.com/fortran-lang/stdlib/pull/456): + slice function's documentation made user friendly +- [#459](https://github.com/fortran-lang/stdlib/pull/459): + Fix CMake variable usage +- [#420](https://github.com/fortran-lang/stdlib/pull/420): + First implementation of real-valued linspace. +- [#468](https://github.com/fortran-lang/stdlib/pull/468): + Update CI +- [#469](https://github.com/fortran-lang/stdlib/pull/469): + CMake: corrections and updates +- [#426](https://github.com/fortran-lang/stdlib/pull/426): + Addition of a subroutine to compute the median of array elements +- [#474](https://github.com/fortran-lang/stdlib/pull/474): + Bug fix: Allocatable argument 'x' is not allocated #472 + +Work in progress: + +- [#481](https://github.com/fortran-lang/stdlib/pull/481) (WIP): + [`stdlib_linalg`] Update eye function. +- [#480](https://github.com/fortran-lang/stdlib/pull/480) (WIP): + [`stdlib_math`] Add seq function. +- [#478](https://github.com/fortran-lang/stdlib/pull/478) (WIP): + [`stdlib_linalg`] Add zeros, ones, ex function. +- [#477](https://github.com/fortran-lang/stdlib/pull/477) (WIP): + [`stdlib_linalg`] Add empty function. +- [#475](https://github.com/fortran-lang/stdlib/pull/475) (WIP): + Generating sorting subroutines specific to character type with fypp +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#470](https://github.com/fortran-lang/stdlib/pull/470) (WIP): + Revival string list +- [#467](https://github.com/fortran-lang/stdlib/pull/467) (WIP): + implemented `move_alloc` for `string_type` +- [#455](https://github.com/fortran-lang/stdlib/pull/455) (WIP): + `stdlib_hash`: waterhash algorithm +- [#452](https://github.com/fortran-lang/stdlib/pull/452) (WIP): + Implementation of a map data type +- [#445](https://github.com/fortran-lang/stdlib/pull/445) (WIP): + [feature] `disp`(display your data) & `format_string`(format other type to string, see #444) +- [#444](https://github.com/fortran-lang/stdlib/pull/444) (WIP): + Add `format_string` routine to format other types to strings +- [#437](https://github.com/fortran-lang/stdlib/pull/437) (WIP): + [FPM] add fpm support +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP): + Probability Distribution and Statistical Functions -- Uniform Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format +- [#157](https://github.com/fortran-lang/stdlib/pull/157) (WIP): + Update CMAKE files + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#507](https://github.com/fortran-lang/fpm/pull/507): + optimize file listing +- [#511](https://github.com/fortran-lang/fpm/pull/511): + check name used for package, executable, test, or example +- [#516](https://github.com/fortran-lang/fpm/pull/516): + initialize allocatable strings before using in a comparison +- [#517](https://github.com/fortran-lang/fpm/pull/517): + Fix run +- [#522](https://github.com/fortran-lang/fpm/pull/522): + remove warnings and fix truncated help text +- [#523](https://github.com/fortran-lang/fpm/pull/523): + Fix compilation error in ifort + +Work in progress: + +- [#525](https://github.com/fortran-lang/fpm/pull/525) (WIP): + proposal to close #525 by generating build/.gitignore +- [#527](https://github.com/fortran-lang/fpm/pull/527) (WIP): + Add objects for handling compiler and archiver +- [#521](https://github.com/fortran-lang/fpm/pull/521) (WIP): + expand tabs +- [#506](https://github.com/fortran-lang/fpm/pull/506) (WIP): + Draft: initial implementation of `implicit_none` +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Draft - Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### LFortran + +Updates for July 2021: + +- 90 [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&state=merged) MRs, this month we have crossed 1000 total merged MRs, 12 total contributors +- Parser: we asked the community to test it, several people have reported about + 15 bugs, we have fixed all of them (AST) +- Initial fixed form parser (AST) +- Classes and class procedures (ASR, LLVM) +- Many common array usage now works, including allocatable (ASR, LLVM) +- Associate construct (ASR, LLVM) +- Compile time evaluation of constant expressions (ASR) +- 7 people contributed code: + - Ondřej Čertík + - Thirumalai Shaktivel + - Gagandeep Singh + - Rohit Goswami + - Dominic Poerio + - Andrew Best + - Sebastian Ehlert + +We are looking for new contributors, so if you are interested, please [get in +touch with us](https://lfortran.org/)! + +## Events + +- We had our 14th Fortran Monthly call on July 20. + You can watch the recording below: + + + +- FortranCon 2021 will be held virtually from September 23-24, 2021. + Registration is free of charge and is due by September 15. + The first call for abstracts is due August 1, and the second is due September 1. + For more information, visit the [FortranCon website](https://tcevents.chem.uzh.ch/event/14/). + +- Work is well under way started for our Google Summer of Code program. Read about our students and their progress so far on Discourse: + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/09-01-Fortran-Newsletter-September-2021.md.txt b/_sources/news/2021/09-01-Fortran-Newsletter-September-2021.md.txt new file mode 100644 index 000000000000..f3f2acc986bd --- /dev/null +++ b/_sources/news/2021/09-01-Fortran-Newsletter-September-2021.md.txt @@ -0,0 +1,308 @@ +--- +category: newsletter +date: 2021-09-01 +author: Milan Curcic, Alexis Perry-Holby, Sebastian Ehlert, Ondřej Čertík +... + +# Fortran newsletter: September 2021 + +Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#303](https://github.com/fortran-lang/fortran-lang.org/pull/303): + Add NJOY to package index + +### Work in progress + +- [#302](https://github.com/fortran-lang/fortran-lang.org/pull/302) (WIP): + Update Silverfrost compiler description. +- [#300](https://github.com/fortran-lang/fortran-lang.org/pull/300) (WIP): + Add QCxMS to package index +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246) (WIP): + Transferring fortran90.org "Fortran Best Practices" into a mini-book +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the [contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#467](https://github.com/fortran-lang/stdlib/pull/467): + Implemented move_alloc for string_type +- [#470](https://github.com/fortran-lang/stdlib/pull/470): + Revival string list +- [#481](https://github.com/fortran-lang/stdlib/pull/481): + [stdlib_linalg] Update eye function. +- [#493](https://github.com/fortran-lang/stdlib/pull/493): + Update copyright and remove old artifact +- [#444](https://github.com/fortran-lang/stdlib/pull/444): + Add format_string routine to format other types to strings +- [#483](https://github.com/fortran-lang/stdlib/pull/483): + Remove GCC Fortran MinGW 8.4.0 from known to work list + +### Work in progress + +- [#501](https://github.com/fortran-lang/stdlib/pull/501) (WIP): + Minor updates to README.md +- [#500](https://github.com/fortran-lang/stdlib/pull/500) (WIP): + Selection algorithms +- [#499](https://github.com/fortran-lang/stdlib/pull/499) (WIP): + [stdlib_linalg] matrix property checks +- [#498](https://github.com/fortran-lang/stdlib/pull/498) (WIP): + [stdlib_math] add `arg/argd/argpi` +- [#494](https://github.com/fortran-lang/stdlib/pull/494) (WIP): + Add testing module to allow better structuring of test suites +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#488](https://github.com/fortran-lang/stdlib/pull/488) (WIP): + [stdlib_math] add `is_close` routines. +- [#478](https://github.com/fortran-lang/stdlib/pull/478) (WIP): + [stdlib_linalg] Add zeros, ones function. +- [#475](https://github.com/fortran-lang/stdlib/pull/475) (WIP): + Generating sorting subroutines specific to `character` type with fypp +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#455](https://github.com/fortran-lang/stdlib/pull/455) (WIP): + stdlib_hash: waterhash algorithm +- [#452](https://github.com/fortran-lang/stdlib/pull/452) (WIP): + Implementation of a map data type +- [#445](https://github.com/fortran-lang/stdlib/pull/445) (WIP): + [stdlib_io] `disp`(display your data) +- [#437](https://github.com/fortran-lang/stdlib/pull/437) (WIP): + [FPM] add fpm support +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP): + Probability Distribution and Statistical Functions -- Uniform Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [Version 0.4.0](https://github.com/fortran-lang/fpm/releases/tag/v0.4.0): + Alpha release update +- [#546](https://github.com/fortran-lang/fpm/pull/546): + Update version for release 0.4.0 +- [#548](https://github.com/fortran-lang/fpm/pull/548): + Fix build on MacOS/ARM64 +- [#527](https://github.com/fortran-lang/fpm/pull/527): + Add objects for handling compiler and archiver +- [#536](https://github.com/fortran-lang/fpm/pull/536): + Always call `git init` in fpm new when backfilling +- [#533](https://github.com/fortran-lang/fpm/pull/533): + Allow extra section in package manifest +- [#528](https://github.com/fortran-lang/fpm/pull/528): + Generate `build/.gitignore` + +### Work in progress + +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#521](https://github.com/fortran-lang/fpm/pull/521) (WIP): + Expand tabs in source parsing +- [#506](https://github.com/fortran-lang/fpm/pull/506) (WIP): + Initial implementation of implicit_none +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) to learn what are all the things that you can specify in the fpm.toml file. +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## FFTPACK + +Zuo Zhihua ([@zoziha](https://github.com/zoziha)) and Ondřej Čertík ([@certik](https://github.com/certik)) started maintaining the public domain project FFTPACK under the Fortran-lang namespace. +The project is readily available for usage in with fpm. + +Here is what is new in FFTPACK: + +- [#10](https://github.com/fortran-lang/fftpack/pull/10): + Add `(i)qct/dcosqi/dcosqf/dcosqb` interfaces for quarter wave data. +- [#7](https://github.com/fortran-lang/fftpack/pull/7): + Add `dzffti/dzfftf/dzfftb` interfaces +- [#4](https://github.com/fortran-lang/fftpack/pull/4): + Improve fft interface for `complex` sequences: `(i)fft/zffti/zfftf/zfftb` +- [#6](https://github.com/fortran-lang/fftpack/pull/6): + Add `(i)rfft/dffti/dfftf/dfftb` interface and ready to move to `fortran-lang` +- [#5](https://github.com/fortran-lang/fftpack/pull/5): + Add `fftshift/ifftshift` +- [#3](https://github.com/fortran-lang/fftpack/pull/3): + Add CI: fpm.yml + +### Work in progress + +- [#11](https://github.com/fortran-lang/fftpack/pull/11) (WIP): + Add `(i)dct/dcosti/dcost` interfaces. + +Feedback and ideas for this project are welcome. + +## Compilers + +### Flang + +Recent development updates: + +- New Driver and CMake integration: + - The new driver has replaced the old, hence f18 has been deleted. + - flang-new (aka. the new driver) now drives the flang bash script before an external compiler is called. + - Code-generation work is ongoing. + - Work is now proceeding to enable CMake to recognize the compiler and set the appropriate options for build configurations. +- FIR (Fortran IR - a dialect of MLIR): + - Fortran 95 lowering and runtime support is nearing completion, particularly of intrinsics + - Code upstreaming will begin again in earnest once F95 is deemed complete +- OpenMP + - Nesting of region semantic checks + - enter_data MLIR to LLVM IR lowering + - Semantic checks for allocate directive + - Lowering for various modifiers for the schedule clause + - Pretty printer and parser for omp.target operation + - Semantic checks for linear, nested barrier, allocate directive + - Progress with firstprivate, critical, collapse, ordered, reduction +- Lift -Werror checks into local functions +- Document the flang wrapper script +- Fix the extent calculation when upper bounds are less than lower bounds +- Fix list-directed plural repeated null values at end of record +- Fix build failure on MacOS involving std::clock_t +- Fix error messages on Windows. +- Disable Plugins in out-of-tree builds +- Correct off-by-one error in SET_EXPONENT + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- 168 + [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&state=merged) + Merge Requests in August 2021 +- The following people have contributed code to LFortran in August: + - Ondřej Čertík + - Thirumalai Shaktivel + - Rohit Goswami + - Gagandeep Singh + - Andrew Best + - Carlos Une +- Sebastian Ehlert got LFortran working with fpm +- Many people have reported bugs (thank you all!) +- Our 3 Google Summer of Code (GSoC) students have successfully finished their + projects. Here are their final reports: + - Gagandeep Singh: [https://czgdp1807.github.io/2021/08/16/z_final_report.html](https://czgdp1807.github.io/2021/08/16/z_final_report.html) + - Thirumalai Shaktivel: [https://gist.github.com/Thirumalai-Shaktivel/c2a1aaa5239e792e499eaa8942987519](https://gist.github.com/Thirumalai-Shaktivel/c2a1aaa5239e792e499eaa8942987519) + - Rohit Goswami: [https://rgoswami.me/posts/gsoc21-fin-reprot/](https://rgoswami.me/posts/gsoc21-fin-reprot/) + +#### LFortran 0.12.0 was released on August 15 + +Changes since the last release. + +- Fixed all issues in the parser that were reported (AST) + - multiple loop single end do + - arithmetic if +- Comments and empty lines are now represented in AST and formatted correctly (AST) +- The formatter (`lfortran fmt`) now uses the minimal amount of parentheses in expressions +- Initial fixed-form parser (AST) +- Initial class support (ASR, LLVM) +- Allocate / deallocate, allocatable arrays (ASR, LLVM) +- Associate block (ASR, LLVM) +- Runtime library refactoring (ASR, LLVM) + - Split into builtin, pure and impure + - `iso_fortran_env`, `iso_c_binding` intrinsic modules added +- Compile time evaluation (ASR, LLVM) + +Commits (`git shortlog -ns v0.11.0..v0.12.0`): + +``` + 369 Ondřej Čertík + 85 Thirumalai Shaktivel + 79 Gagandeep Singh + 75 Rohit Goswami + 20 Andrew Best + 4 Dominic Poerio +``` + +#### Updates in master since the last release: + +- LFortran can now compile binaries on Windows +- C interoperation works on all platforms (including Windows and MSVC) +- Runtime library improvements + - Complex intrinsics fixed on all platforms + - All trigonometric functions now use the Fortran `impure` interface in the runtime library + - More intrinsics implemented +- Initial implementation of classes and methods +- LFortran now works with `fpm` and compiles the hello world project and a few other example projects +- Parser improvements: team and sync statements +- Improved handling of character types as function arguments and return values + +We are looking for new contributors, so if you are interested, please [get in +touch with us](https://lfortran.org/)! We would be happy to do a video call +with you to get you started. + +## Events + +- We had our 15th Fortran Monthly call on August 17. + You can watch the recording below: + + +- FortranCon 2021 will be held virtually from September 23-24, 2021. + Registration is free of charge and is due by September 15. + The second call for abstracts is due September 1. + For more information, visit the [FortranCon website](https://tcevents.chem.uzh.ch/event/14/). + +- Our Google Summer of Code program for 2021 is coming to a close. + Read about our students and their progress so far on Discourse: + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/10-01-Fortran-Newsletter-October-2021.md.txt b/_sources/news/2021/10-01-Fortran-Newsletter-October-2021.md.txt new file mode 100644 index 000000000000..6d9affcbfc44 --- /dev/null +++ b/_sources/news/2021/10-01-Fortran-Newsletter-October-2021.md.txt @@ -0,0 +1,315 @@ +--- +category: newsletter +date: 2021-10-01 +author: Laurence Kedward, Alexis Perry-Holby, Ondřej Čertík +... + +# Fortran newsletter: October 2021 + +Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#305](https://github.com/fortran-lang/fortran-lang.org/pull/305): + September newsletter draft +- [#300](https://github.com/fortran-lang/fortran-lang.org/pull/300): + Add QCxMS to package index +- [#302](https://github.com/fortran-lang/fortran-lang.org/pull/302): + Update Silverfrost compiler description. +- [#307](https://github.com/fortran-lang/fortran-lang.org/pull/307): + Fixed typo +- [#308](https://github.com/fortran-lang/fortran-lang.org/pull/308): + remove excess 'mpi' tag from fortran2018-examples +- [#246](https://github.com/fortran-lang/fortran-lang.org/pull/246): + Transferring fortran90.org "Fortran Best Practices" into a mini-book +- [#314](https://github.com/fortran-lang/fortran-lang.org/pull/314): + grammar and spelling from issue #313 +- [#317](https://github.com/fortran-lang/fortran-lang.org/pull/317): + more grammar, spelling, and rewording for Fortran Best Practices +- [#324](https://github.com/fortran-lang/fortran-lang.org/pull/324): + replaced "be found be found" with "be found" +- [#320](https://github.com/fortran-lang/fortran-lang.org/pull/320): + Alternative approach to avoiding integer division +- [#328](https://github.com/fortran-lang/fortran-lang.org/pull/328): + Add incompact3d to package index +- [#333](https://github.com/fortran-lang/fortran-lang.org/pull/333): + Add fparser to package index +- [#335](https://github.com/fortran-lang/fortran-lang.org/pull/335): + Adding two more packages to the index +- [#334](https://github.com/fortran-lang/fortran-lang.org/pull/334): + Add pFlogger to package index +- [#336](https://github.com/fortran-lang/fortran-lang.org/pull/336): + One more package + +### Work in progress + +- [#329](https://github.com/fortran-lang/fortran-lang.org/pull/329) (WIP): + Quantum Information book, WSL GUI, and typos +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Draft: Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#509](https://github.com/fortran-lang/stdlib/pull/509): + fixed typo +- [#503](https://github.com/fortran-lang/stdlib/pull/503): + refactor documentation regarding consistency +- [#511](https://github.com/fortran-lang/stdlib/pull/511): + Correctly set CMAKE_INSTALL_MODULEDIR cache variable +- [#513](https://github.com/fortran-lang/stdlib/pull/513): + Update issue templates +- [#523](https://github.com/fortran-lang/stdlib/pull/523): + Rename config.yaml -> config.yml +- [#508](https://github.com/fortran-lang/stdlib/pull/508): + github-ci: add fpm support +- [#475](https://github.com/fortran-lang/stdlib/pull/475): + Generating sorting subroutines specific to `character` type with fypp +- [#525](https://github.com/fortran-lang/stdlib/pull/525): + Add files generated by tests to gitignore +- [#529](https://github.com/fortran-lang/stdlib/pull/529): + Add maintainer entry to fpm manifest +- [#530](https://github.com/fortran-lang/stdlib/pull/530): + Make it clearer how the user can control compiler optimization +- [#528](https://github.com/fortran-lang/stdlib/pull/528): + Reduce redundancy caused by optional arguments +- [#3](https://github.com/fortran-lang/stdlib-cmake-example/pull/3) (`stdlib-cmake-example`): + Add example integration with test-drive + +### Work in progress + +- [#543](https://github.com/fortran-lang/stdlib/pull/543) (WIP): + Fix string concat +- [#539](https://github.com/fortran-lang/stdlib/pull/539) (WIP): + Add function gcd +- [#538](https://github.com/fortran-lang/stdlib/pull/538) (WIP): + Bump stdlib version to 0.1.0 +- [#537](https://github.com/fortran-lang/stdlib/pull/537) (WIP): + Add a changelog for the current features of stdlib +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#521](https://github.com/fortran-lang/stdlib/pull/521) (WIP): + Ensure module output directory is generated in configure stage +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display your data). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#500](https://github.com/fortran-lang/stdlib/pull/500) (WIP): + Selection algorithms +- [#499](https://github.com/fortran-lang/stdlib/pull/499) (WIP): + [stdlib_linalg] matrix property checks +- [#498](https://github.com/fortran-lang/stdlib/pull/498) (WIP): + [stdlib_math] add `arg/argd/argpi` +- [#494](https://github.com/fortran-lang/stdlib/pull/494) (WIP): + Add testing module to allow better structuring of test suites +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#488](https://github.com/fortran-lang/stdlib/pull/488) (WIP): + [stdlib_math] add `is_close` routines. +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#455](https://github.com/fortran-lang/stdlib/pull/455) (WIP): + stdlib_hash: waterhash algorithm +- [#452](https://github.com/fortran-lang/stdlib/pull/452) (WIP): + Implementation of a map data type +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#272](https://github.com/fortran-lang/stdlib/pull/272) (WIP): + Probability Distribution and Statistical Functions -- Uniform Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#521](https://github.com/fortran-lang/fpm/pull/521): + expand tabs +- [#557](https://github.com/fortran-lang/fpm/pull/557): + Update installer script to update subprojects first +- [#558](https://github.com/fortran-lang/fpm/pull/558): + Add issue templates +- [#565](https://github.com/fortran-lang/fpm/pull/565): + Default branch renaming aftermath +- [#562](https://github.com/fortran-lang/fpm/pull/562): + Add new distributions where fpm is available to README +- [#563](https://github.com/fortran-lang/fpm/pull/563): + Add workflow to create single source fpm version +- [#564](https://github.com/fortran-lang/fpm/pull/564): + Separate upload stage in CI testing +- [#572](https://github.com/fortran-lang/fpm/pull/572): + Build no tests by default +- [#549](https://github.com/fortran-lang/fpm/pull/549): + Allow setting, archiver, C compiler flags and linker flags from commandline +- [#578](https://github.com/fortran-lang/fpm/pull/578): + help text was truncated +- [#579](https://github.com/fortran-lang/fpm/pull/579): + Fix dir not getting removed after testing fpm +- [#584](https://github.com/fortran-lang/fpm/pull/584): + Actually read environment variables + +### Work in progress + +- [#575](https://github.com/fortran-lang/fpm/pull/575) (WIP): + Enable multiple build output directories +- [#569](https://github.com/fortran-lang/fpm/pull/569) (WIP): + Add workflow for continuous delivery +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/HEAD/PACKAGING.md) + to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/HEAD/manifest-reference.md) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- New Driver and CMake integration: + - flang-omp-report plugin - first full fledged frontend plugin has been contributed + - CMake integration - waiting on a new PR + - Code-generation work is ongoing - task list has been presented to the community for discussion and approval +- FIR (Fortran IR - a dialect of MLIR): + - Fortran 95 lowering and runtime support is nearing completion + - Code upstreaming has begun again +- OpenMP + - Merged: Critical, collapse clause, Fixes for SNAP. + - In review: Firstprivate, Ordered, MLIR definitions for a few target side constructs, semantic checks for atomic, critical, sections, simd + - OpenMP 5.0 metadirective +- Runtime + - Change complex type define in runtime for clang-cl + - Implement READ(SIZE=) and INQUIRE(IOLENGTH=) in runtime + - GET_COMMAND_ARGUMENT runtime implementation, handling the LENGTH, VALUE, STATUS and ERRMSG parameters. + - COMMAND_ARGUMENT_COUNT runtime implementation + - Add POSIX implementation for SYSTEM_CLOCK + - Fix WRITE after BACKSPACE on variable-length file + - Implement Posix version of DATE_AND_TIME runtime +- Ported test scripts to Python, enables testing on Windows +- More precise checks for NULL() operands +- Enforce array conformance in actual arguments to ELEMENTALs +- Constant folding for COUNT, SQRT, HYPOT, CABS, CSHIFT, EOSHIFT, PACK, UNPACK, and TRANSPOSE +- Make this_image() an intrinsic function +- Revamp C1502 checking of END INTERFACE [generic-spec] +- Accept SIZE(assumed-rank, DIM=n) +- Validate SIZE(x,DIM=n) dimension for assumed-size array x +- Catch errors with intrinsic array inquiry functions +- Correct overflow detection in folding of real->integer conversions +- Upgrade warning to error in case of PURE procedure +- Enforce fixed form rules about END continuation +- Enforce specification function rules on callee, not call +- Catch error: base of DATA statement object can't be a pointer +- Represent parentheses around derived types +- Enforce constraint: defined ass't in WHERE must be elemental +- Catch branching into FORALL/WHERE constructs +- Implement semantic checks for ELEMENTAL subprograms +- Signal EOR in non advancing IO and move to next record +- Extension: reduced scope for some implied DO loop indices +- Take result length into account in ApplyElementwise folding +- Apply double precision KindCode in specific proc interface + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- 81 + [merged](https://gitlab.com/lfortran/lfortran/-/merge_requests?scope=all&state=merged) + Merge Requests in September 2021 +- LFortran Minimum Viable Product (MVP) [released](https://lfortran.org/blog/2021/09/lfortran-minimum-viable-product-mvp/) +- LFortran 0.13.0, 0.13.1 and 0.14.0 released in September +- The following people have contributed code to LFortran in September: + - Ondřej Čertík + - Gagandeep Singh + - Carlos Une + - Thirumalai Shaktivel + - Harris M. Snyder + - Sebastian Ehlert + - Mengjia Lyu +- Many people have reported bugs (thank you all!) +- Main features implemented in September: + - Operator overloading (ASR, LLVM) + - Goto (ASR, LLVM) + - Runtime library improvements: `iand`, `len`, `trim`, `len_trim` + - Interactive mode: get complex numbers, intrinsic functions working + (Windows, macOS, Linux) + - New driver options: --fast, --symtab-only, --target + +We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed. + +## Events + +- We had our 16th Fortran Monthly call on September 22. + You can watch the recording below: + + +- The second international Fortran Conference (FortranCon) 2021 was held virtually on September 23-24 + Video recordings of the talks will be made available soon. + For more information, visit the [FortranCon website](https://tcevents.chem.uzh.ch/event/14/). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/11-01-Fortran-Newsletter-November-2021.md.txt b/_sources/news/2021/11-01-Fortran-Newsletter-November-2021.md.txt new file mode 100644 index 000000000000..232f70d75d4a --- /dev/null +++ b/_sources/news/2021/11-01-Fortran-Newsletter-November-2021.md.txt @@ -0,0 +1,260 @@ +--- +category: newsletter +date: 2021-11-01 +author: Sebastian Ehlert, Alexis Perry-Holby, Milan Curcic, Ondřej Čertík +... + +# Fortran newsletter: November 2021 + +Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +This month we've had several updates to the website: + +- [#345](https://github.com/fortran-lang/fortran-lang.org/pull/345): + Fix title in learning resources +- [#341](https://github.com/fortran-lang/fortran-lang.org/pull/341): + Add Cantera to package index +- [#329](https://github.com/fortran-lang/fortran-lang.org/pull/329): + Quantum Information book, WSL GUI, and typos +- [#340](https://github.com/fortran-lang/fortran-lang.org/pull/340): + Minor fixes in Best Practices + +### Work in progress + +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [0.1.0](https://github.com/fortran-lang/stdlib/releases/tag/v0.1.0): + Initial version of the Fortran standard library +- [#543](https://github.com/fortran-lang/stdlib/pull/543): + Fix string concat + +### Work in progress + +- [#554](https://github.com/fortran-lang/stdlib/pull/554) (WIP): + Hash functions +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + Fix bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib\_io] add `disp` (display your data). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#500](https://github.com/fortran-lang/stdlib/pull/500) (WIP): + Selection algorithms +- [#499](https://github.com/fortran-lang/stdlib/pull/499) (WIP): + [stdlib\_linalg] matrix property checks +- [#498](https://github.com/fortran-lang/stdlib/pull/498) (WIP): + [stdlib\_math] add `arg/argd/argpi` +- [#494](https://github.com/fortran-lang/stdlib/pull/494) (WIP): + Add testing module to allow better structuring of test suites +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#488](https://github.com/fortran-lang/stdlib/pull/488) (WIP): + [stdlib\_math] add `is_close` routines. +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#597](https://github.com/fortran-lang/fpm/pull/597): + Add LFortran optimization flag to release profile +- [#595](https://github.com/fortran-lang/fpm/pull/595): + List names without suffix (mainly for Windows) +- [#590](https://github.com/fortran-lang/fpm/pull/590): + Change link command on Windows with `ifort` or `ifx` +- [#575](https://github.com/fortran-lang/fpm/pull/575): + Enable multiple build output directories +- [#587](https://github.com/fortran-lang/fpm/pull/587): + Bootstrapping instructions version update + +### Work in progress + +- [#598](https://github.com/fortran-lang/fpm/pull/598) (WIP): + Update README.md compiler, archiver, & link flags +- [#569](https://github.com/fortran-lang/fpm/pull/569) (WIP): + Add workflow for continuous delivery +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/main/PACKAGING.md) + to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/main/manifest-reference.md) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- Runtime + - Front-end and runtime support for CALL EXIT and ABORT + - Fix formatted real input regression w/ spaces + - Add runtime interface for GET_ENVIRONMENT_VARIABLE + - More work on SYSTEM_CLOCK runtime API and implementation + - Implement GET_ENVIRONMENT_VARIABLE(LENGTH) +- OpenMP + - Added OpenMP 5.0 specification based semantic checks for sections construct and test case for simd construct + - Added test case for OpenMP 5.0 specification based semantic checks for parallel sections construct + - Added OpenMP 5.0 specification based semantic checks for CRITICAL construct name resolution + - Checks for THREADPRIVATE and DECLARE TARGET Directives + - Initial parsing/sema for append_args clause for 'declare variant' +- FIR + - Add typeparams to fir.array_update, fir.array_fetch and fir.array_merge_store operations. Add optional slice operands to fir.array_merge_store op. + - Updated various ops - fir.extract_value, fir.insert_value, fir.allocmem, fir.alloca, fir.field_index, fir.freemem, fir.store + - Move the parsers, printers and builders from the TableGen file to the .cpp file + - Update fir.alloca op - Add pinned attributes and specific builders + - Add ops: fir.char_convert and fir.array_modify + - Add passes: external name interop, affine promotion, affine demotion, character conversion, abstract result conversion, cfg conversion + - Add fir.convert canonicalization patterns + - Add the DoLoopHelper + - Add IfBuilder and utility functions + - Add FIRBuilder utility functions + - Add character utility functions in FIRBuilder + - Add Character helper + - Add utility function to FIRBuilder and MutableBox + - Add substring to fir.slice operation + - Avoid slice with substr in fir.array_load, fir.array_coor and fir.array_merge_store +- Driver + - Error if uuidgen is not installed + - Fix erroneous `&` + - Add actions that execute despite semantic errors +- flang-omp-report + - replace std::vector's with llvm::SmallVector + - Switch from std::string to StringRef (where possible) + - replace std::map with llvm::DenseMap +- Make builtin types more easily accessible; use them +- Fix test regression from SQRT folding +- Fold FINDLOC, MAXLOC, MINLOC, LGE/LGT/LLE/LLT, BTEST intrinsic functions +- Take into account SubprogramDetails in GetInterfaceSymbol +- Add debug dump method to evaluate::Expr and semantics::Symbol +- Add a wrapper for Fortran main program +- Improve runtime interface with C99 complex +- Better error recovery for missing THEN in ELSE IF +- Define IEEE_SCALB, IEEE_NEXT_AFTER, IEEE_NEXT_DOWN, IEEE_NEXT_UP +- Catch mismatched parentheses in prescanner +- Error checking for IBCLR/IBSET and ISHFT/SHIFT[ALR] +- Document behavior for nonspecified/ambiguous cases +- Add two negative tests for needExternalNameMangling +- Expunge bogus semantic check for ELEMENTAL without dummies +- Admit NULL() in generic procedure resolution cases +- Fix bogus folding error for ISHFT(x, negative) +- Emit unformatted headers & footers even with RECL= +- Enforce rest of semantic constraint C919 +- Extension to distinguish specific procedures +- Support NAMELIST input of short arrays +- Fix generic resolution case +- Speed common runtime cases of DOT_PRODUCT & MATMUL +- Fix crash on empty formatted external READs +- Extension: allow tabs in output format strings +- Fix DOT_PRODUCT for logical +- Fix NAMELIST input bug with multiple subscript triplets +- Support legacy usage of 'A' edit descriptors for integer & real + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- 155 Merge Requests merged in October 2021 +- AST to ASR transformation simplified and unified +- Many new intrinsics added +- Rust style error messages, add first warnings and style suggestions +- Fixed bugs in location information +- C preprocessor added + +We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed. + +## Events + +- We have adopted two new Fortran-lang guidelines: + - [Governance document](https://github.com/fortran-lang/.github/blob/main/GOVERNANCE.md) that describes how Fortran-lang projects are managed + - [Administration, moderation, and editing guide](https://fortran-lang.discourse.group/t/welcome-to-discourse/7#administration-moderation-and-editing-3) for Fortran Discourse + Both documents are part of an effort to increase transparency between Fortran-lang administrators and the rest of the community. +- The US Fortran Standards Committee (J3) held the meeting 225 October 18-27, 2021. + The meeting was virtual and on Mondays and Wednesdays only. + Discussions focused on resolving any outstanding issues to the Fortran 202X features. + Here are the links to the meeting [agenda](https://j3-fortran.org/doc/year/21/agenda225.txt), + [minutes](https://j3-fortran.org/doc/year/21/minutes225.txt), + and [papers](https://j3-fortran.org/doc/meeting/225). + See also the [Fortran-lang and LFortran liaison report to J3](https://j3-fortran.org/doc/year/21/21-206.txt) + submitted by Ondřej Čertík and Milan Curcic. +- We had our 19th Fortran Monthly call on October 19. + You can watch the recording below: + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/12-01-Fortran-Newsletter-December-2021.md.txt b/_sources/news/2021/12-01-Fortran-Newsletter-December-2021.md.txt new file mode 100644 index 000000000000..357c170e6383 --- /dev/null +++ b/_sources/news/2021/12-01-Fortran-Newsletter-December-2021.md.txt @@ -0,0 +1,260 @@ +--- +category: newsletter +date: 2021-12-01 +author: Milan Curcic, Sebastian Ehlert, Alexis Perry-Holby +... + +# Fortran newsletter: December 2021 + +Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new and ongoing in the fortran-lang.org repo: + +- [#348](https://github.com/fortran-lang/fortran-lang.org/pull/348): + Fix typo in author field + +### Work in progress + +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics +- [#201](https://github.com/fortran-lang/fortran-lang.org/pull/201) (WIP): + Internationalization for fortran-lang + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#558](https://github.com/fortran-lang/stdlib/pull/558): + Pin specific fpm version +- [#556](https://github.com/fortran-lang/stdlib/pull/556): + fix some FORD links +- [#494](https://github.com/fortran-lang/stdlib/pull/494): + Add testing module to allow better structuring of test suites +- [#562](https://github.com/fortran-lang/stdlib/pull/562): + Minor update `pure/elemental` in `string_type` module +- [#565](https://github.com/fortran-lang/stdlib/pull/565): + Make support for quadruple precision optional +- [#566](https://github.com/fortran-lang/stdlib/pull/566): + Create a call for reviewers pull request template +- [#578](https://github.com/fortran-lang/stdlib/pull/578): + Update error in case fypp preprocessor is not found +- [#579](https://github.com/fortran-lang/stdlib/pull/579): + Add module for handling version information of stdlib + +### Work in progress + +- [#581](https://github.com/fortran-lang/stdlib/pull/581) (WIP): + Add routines for saving/loading arrays in npy format +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#573](https://github.com/fortran-lang/stdlib/pull/573) (WIP): + Revised Hash functions incorporating changes in the main Stdlib repository. +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#500](https://github.com/fortran-lang/stdlib/pull/500) (WIP): + Selection algorithms +- [#499](https://github.com/fortran-lang/stdlib/pull/499) (WIP): + [stdlib_linalg] matrix property checks +- [#498](https://github.com/fortran-lang/stdlib/pull/498) (WIP): + [stdlib_math] add `arg/argd/argpi` +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#488](https://github.com/fortran-lang/stdlib/pull/488) (WIP): + [stdlib_math] add `is_close` routines. +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#353](https://github.com/fortran-lang/stdlib/pull/353) (WIP): + Initial checkin for a module for tolerant comparison of reals +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#273](https://github.com/fortran-lang/stdlib/pull/273) (WIP): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [v0.5.0](https://github.com/fortran-lang/fpm/releases/tag/v0.5.0): + Alpha release update +- [#598](https://github.com/fortran-lang/fpm/pull/598): + Update README.md compiler, archiver, & link flags +- [#569](https://github.com/fortran-lang/fpm/pull/569): + Add workflow for continuous delivery +- [#602](https://github.com/fortran-lang/fpm/pull/602): + fix(fpm_compiler): intel windows release flag was incorrect +- [#607](https://github.com/fortran-lang/fpm/pull/607): + Repair --list option and correct obsolete descriptions of the --list option +- [#612](https://github.com/fortran-lang/fpm/pull/612): + Fix modules listing (for install) +- [#613](https://github.com/fortran-lang/fpm/pull/613): + Add: critical section to mkdir in backend +- [#616](https://github.com/fortran-lang/fpm/pull/616): + Add: workflow to make installer on push and release +- [#614](https://github.com/fortran-lang/fpm/pull/614): + Bump version to 0.5.0 +- [setup-fpm#7](https://github.com/fortran-lang/setup-fpm/pull/7): + Fix Latest Option + +### Work in progress + +- [#622](https://github.com/fortran-lang/fpm/pull/622) (WIP): + Cleanup the backend output +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://github.com/fortran-lang/fpm/blob/main/PACKAGING.md) + to learn how to build your package with fpm, and the [manifest reference](https://github.com/fortran-lang/fpm/blob/main/manifest-reference.md) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- OpenMP + - Use the ultimate symbol in a call to the IsPointer function + - Add parsing/sema/serialization for 'bind' clause. +- FIR + - Add base of the FIR to LLVM IR pass + - Add various FIR to LLVM IR conversion patterns: + - fir.unreachable + - fir.insert_on_range + - fir.zero_bits + - fir.select and fir.select_rank + - fir.extract_value and fir.insert_value + - types - fir.box, fir.logical, fir.char, fir.ptr + - fir.box_rank, fir.box_addr, fir.box_dims, fir.box_elesize + - fir.convert + - fir.call + - fir.store and fir.load + - Add substr information to fircg.ext_embox and fircg.ext_rebox operations + - Use notifyMatchFailure in fir.zero_bits conversion + - Restrict array type on fir.insert_on_range + - Add test for FIR types conversion + - Use contralized values for indexing box + - Add complex operations conversion from FIR LLVM IR + - Add TargetRewrite pass and TargetRewrite: Rewrite COMPLEX values +- Runtime + - Read environment variables directly +- flang-omp-report + - Removed unnecessary comments in flang-omp-report plugin tests + - Remove the loop workarounds for nowait clause + - Add flang-omp-report summarising script +- Checks for pointers to intrinsic functions +- Fold SPREAD +- Improve error message for misuse of NULL(mold) as data statement constant +- Fix crash on "call system_clock(count_max=j)" +- Fix combined folding of FINDLOC/MAXLOC/MINLOC +- Implement GET_ENVIRONMENT_VARIABLE(VALUE) +- Remove builder that takes SSA value instead of Attribute on ExtractValueOp, InsetValueOp, and InsertOnRangeOp +- Remove getModel in DescriptorModel.h +- Set the addendum when establishing pointer section in descriptor +- Fix error in characteristics check at procedure pointer assignment +- Initial parsing/sema for 'align' clause +- Don't reference non-invariant symbols in shape expressions +- Make subscript list argument a nullable pointer +- Distinguish error/warning cases for bad jumps into constructs +- Fix folding of EPSILON() + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- 32 Merge Requests merged in November 2021 +- Support for same name interface and subroutine/function +- Compile-time evaluation for bit intrinsics +- Implement the `repeat` and `shape` intrinsics +- Variadic support for `min` and `max` intrinsics +- Implement the scalar `random_number` function +- Fixes and improved error message for `read` and `write` statements +- Support the `final`, `intrinsic`, and `private` attributes +- Implement the `ieee_arithmetic` intrinsic module +- Support for the `abstract` class +- Support for `assignment(=)` on `use` statement + +We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed. + +## Events + +- Sebastian Ehlert presented the Fortran Package Manager at the PackagingCon 2021 conference. + You can watch the recording below: + +- Recordings of all FortranCon 2021 presentations are now available to view in + the [FortranCon YouTube Channel](https://www.youtube.com/playlist?list=PLeKbr7eYHjt5UaV9zQtY24oEbne9_uFni). + Enjoy! +- We had our 20th Fortran Monthly call on November 15. + You can watch the recording below: + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2021/12-29-Fortran-lang-2021-in-review.md.txt b/_sources/news/2021/12-29-Fortran-lang-2021-in-review.md.txt new file mode 100644 index 000000000000..6ce82ed1dbe9 --- /dev/null +++ b/_sources/news/2021/12-29-Fortran-lang-2021-in-review.md.txt @@ -0,0 +1,375 @@ +--- +category: newsletter +date: 2021-12-29 +author: Milan Curcic, Ondřej Čertík, Laurence Kedward, Sebastian Ehlert, Jérémie Vandenplas +... + +=(Fortran-lang-2021-in-review) + +# Fortran-lang: 2021 in review + +With another year behind us, let's review the progress that the +Fortran-lang community has made. +If you're new to Fortran-lang, here's a quick intro: +We're an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you're first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach. + +## Standard Library (stdlib) + +To date, [33 people](https://github.com/fortran-lang/stdlib/graphs/contributors) +have contributed code to stdlib, and more than 100 people have participated in +discussions. +More than a dozen new modules have been added in 2021: + +- `stdlib_array`: Provides `trueloc` and `falseloc` which allow you + to index an array based on a logical condition in a functional style +- `stdlib_hash`: Provides many hash algorithms, 32- and 64-bit alike +- `stdlib_math`: Provides a number of common mathematical functions +- `stdlib_random`: Pseudo-random integer number generation +- `stdlib_selection`: Selection procedures for selecting elements from an array + given a desired range +- `stdlib_sorting`: Sorting procedures based on Rust's sorting algorithm and + introsort by David Musser +- `stdlib_specialfunctions`: Provides the Legendre function and its derivative + in support of the Gaussian quadrature procedures +- `stdlib_stats_distribution_normal`: Functions to sample values from a normal + distribution +- `stdlib_stats_distribution_uniform`: Functions to sample values from a uniform + distribution +- `stdlib_string_type`: Provides a `string_type` derived type that alleviates + some limitations of the variable-length `character` variables. `string_type` + is compatible with all intrinsic procedures that operate on `character`. +- `stdlib_stringlist_type`: A derived type that is a 1-dimensional list of + strings +- `stdlib_strings`: Provides a number of inquiry and manipulation procedures that + complement the intrinsic set +- `stdlib_version`: Allows querying the version of the stdlib library build + +which brings us to a total of 23 modules in stdlib. +You can read about these modules in more detail on the +[stdlib API docs website](https://stdlib.fortran-lang.org). + +Besides the new modules, procedures, and derived types, there have been a few +key improvements in terms of stdlib delivery: + +1. You can now use stdlib as a dependency in your fpm projects, + see [here](https://github.com/fortran-lang/stdlib#build-with-fortran-langfpm). + This significantly lowers the bar for getting started with stdlib. +2. We had our first stdlib release (0.1.0) on October 4. As of now we don't have + a set release schedule, and plan to publish a new release when there is + significant new functionality. + As stdlib matures and becomes more widely used, we expect releases to become + more frequent. +3. We now maintain a + [change log](https://github.com/fortran-lang/stdlib/blob/HEAD/CHANGELOG.md) where every change to the API is documented. + This is a useful document to reference when you want to know what's been + added to the stdlib since the latest release. + +If you haven't tried stdlib yet, please do and let us know what you think +and how we can improve it. +Our vision for stdlib is to provide basic utilities that most Fortran projects use, +as well as wider numerical capabilities with the scope of NumPy and SciPy. + +## Fortran Package Manager (fpm) + +Fortran Package Manager (fpm) is the package manager and build system for +Fortran. +Its key goal is to make developing, distributing, and reusing Fortran +libraries and applications as easy and as fun as possible. +In 2020, the big change for fpm was the transition from the prototype +implemented in Haskell to a pure Fortran implementation. +Fpm has since been used in increasingly more and ever larger Fortran projects. + +To date, [22 people](https://github.com/fortran-lang/fpm/graphs/contributors) +have contributed code to fpm. +In 2021 fpm has advanced from v0.1.3 to v0.5.0. +Key additions this year include (release version in parentheses): + +- CLI arguments for linker, archiver, and C compiler (0.5.0) +- Support for MPI and LFortran (0.4.0) +- Support for installed library modules via `external-modules` in the manifest + (0.3.0) +- Automatic discovery of manifest files in parent directories (0.3.0) +- Support for reading package version from file (0.3.0) +- Support for include directories (0.2.0) +- Support for `--flag` CLI option to specify compiler flags (0.2.0) +- `fpm build --show-model` displays the internal representation of a package + (0.1.4) +- Allow hyphen in new package names (0.1.4) +- `fpm new` now supports `--full` and `--bare` to specify level of scaffolding + (0.1.4) + +Check out also these fpm plugins: + +- [fpm-search](https://github.com/brocolis/fpm-search): + Adds the `fpm search` command for searching for registered fpm packages from + the command line. +- [fpm-man](https://github.com/urbanjost/fpm-man): + Adds the `fpm man` command for displaying man-style help pages about Fortran + intrinsics and other language features. + +At the time of writing, there are almost 200 projects now using fpm. +If you haven't tried fpm yet, please do! +It has truly been a game-changing tool for many of us. + +We have many ideas that we want to pursue, such as: + +- First-class integration with other package managers such as Spack and Conda +- First-class integration with build systems like CMake and Meson +- Improving [fpm's package registry](https://github.com/fortran-lang/fpm-registry), etc. + +We are always looking for new contributors. +If any of these projects interest you, please join us. + +## LFortran + +
+ + + +
+ +Though not technically a Fortran-lang project, +[LFortran](https://lfortran.org) has been growing close to the Fortran-lang +community and projects largely thanks to its creator and lead developer +[Ondřej Čertík](https://github.com/certik) also being one of the founding +members of Fortran-lang. +LFortran has been developing rapidly this year and was released as a +[Minimum Viable Product (MVP)](https://lfortran.org/blog/2021/09/lfortran-minimum-viable-product-mvp/) in September. +LFortran currently parses all of Fortran 2018 and compiles a significant +subset of the language. +16 people have contributed code so far, and many more have reported bugs or participated in discussions. +If you haven't tried LFortran yet, please do and let us know how it can best +improve for your use case. +You can help speed up LFortran's development by contributing code and/or +documentation directly, or by donating funds to the project via +[NumFOCUS](https://numfocus.org/project/lfortran). + +Follow LFortran on Twitter at [@lfortranorg](https://twitter.com/lfortranorg). + +## fortran-lang.org, Discourse, and social media + +A major addition to the Fortran website this year is the +[Fortran Best Practices mini-book](https://fortran-lang.org/learn/best_practices). +This is a port and an update to the well-known +[fortran90.org](https://www.fortran90.org) by +[Ondřej Čertík](https://github.com/certik). +It provides a plethora of tips on how to write simple and idiomatic Fortran +for numerical tasks, and how to avoid some common gotchas. +Give it a read and let us know how it can be improved. + +The [Fortran Discourse](https://fortran-lang.discourse.group) is as active +as ever, with new users joining daily. +There are currently 338 active users out of a total of 537 registered users. +The Fortran Discourse is a great place to ask for help with Fortran code, post +a Fortran job opening, and discuss anything Fortran-related. + +We also continue to release the monthly newsletter where we +document the progress month-by-month, as well as post about any notable events +in the Fortran world. +This newsletter is a great way to stay up to date with Fortran-lang. +If you're also on Twitter, follow our account +[@fortranlang](https://twitter.com/fortranlang) for daily bite-size news and +updates, as well as the new [@FortranTip](https://twitter.com/FortranTip) +account, managed by [Beliavsky](https://github.com/beliavsky), which brings +daily Fortran tips to your Twitter feed. + +Finally, we meet on monthly video calls to discuss issues and topics related to all +Fortran-lang projects. +The calls are advertised on Fortran Discourse and are open to everyone. +Don't hesitate to join the call to meet other Fortran-lang participants and take part +in different discussions. + +## New projects + +In addition to the flagship projects summarized above, a few new projects +started or were adopted by Fortran-lang this year. + +### fftpack + +[fftpack](https://github.com/fortran-lang/fftpack) is a classic collection of +subroutines to perform the Fast Fourier Transform on real and complex data. +It is based on the classic +[FFTPACK library from Netlib](http://www.netlib.org/fftpack/). +fftpack was adopted by Fortran-lang in an effort to provide: + +- A community-maintained FFT library +- Bug fixes to the existing codebase +- Modern interfaces on top of the existing API +- fpm package for easy use as a dependency. + +### test-drive + +[Test-drive](https://github.com/fortran-lang/test-drive) is a simple and +easy-to-use testing framework developed by +[Sebastian Ehlert](https://github.com/awvwgk). +It follows a simple functional style to collect and run your tests in parallel +and print a minimal and clean diagnostic printout to the standard output. +Test-drive is currently used by both stdlib and fpm for their own test suites. +Give test-drive a test drive for your next Fortran project! + +### fpm-docs + +[fpm-docs](https://github.com/fortran-lang/fpm-docs) is a brand new user +documentation website for fpm, developed by +[Sebastian Ehlert](https://github.com/awvwgk). +Its key aim is to provide community-maintained documentation across four +target audiences/use cases: + +- **Tutorials**: for learning how to use fpm for Fortran development +- **How-to guides**: recipes for specific and concrete problems +- **Design documents**: resources that document the design of various aspects of + fpm +- **References**: specification documents of fpm components + +
+ + + +
+ +As the fpm user docs are now hosted at +[fpm.fortran-lang.org](https://fpm.fortran-lang.org), the API docs are now +located at [fortran-lang.github.io/fpm/](https://fortran-lang.github.io/fpm/). + +## Google Summer of Code 2021 + +2021 has been the first year for Fortran-lang to participate in the +[Google Summer of Code](https://summerofcode.withgoogle.com/) program. +Together with NumFOCUS and LFortran, Fortran-lang had six students who worked on a +variety of projects: + +- [Aman Godara](https://github.com/Aman-Godara) (Improving strings in stdlib) +- [Chetan Karwa](https://github.com/chetankarwa) (Linked lists in stdlib) +- [Gagandeep Singh](https://github.com/czgdp1807) (Arrays and allocatables in LFortran) +- [Jakub Jelínek](https://github.com/kubajj) (Compiler arguments in fpm) +- [Rohit Goswami](https://rgoswami.me/) (Compiling dftatom with LFortran) +- [Thirumalai Shaktivel](https://github.com/Thirumalai-Shaktivel) (AST generation in LFortran) + +You can read in more detail about their projects +[here](https://summerofcode.withgoogle.com/archive/2021/organizations/6542461173760000). + +A big thank you to all students, mentors, and administrators, for their great +work, and of course, to the Google Summer of Code program for making +possible for students to participate. + +We plan to apply for Google Summer of Code in 2022 as well. +The program is no longer limited to students and anybody 18 or older can apply +to work on an open source project and get paid for it. +If you're interested participating in the program in 2022 with Fortran-lang, +don't hesitate to contact us and we'll guide you toward applying. + +## Conferences and papers + +### FortranCon 2021 + +Like in 2020, the Fortran event of this year was +[FortranCon 2021](https://tcevents.chem.uzh.ch/event/14/), the international +Fortran conference, held on September 23-24. +The keynote speaker this year was [Damian Rouson](https://github.com/rouson), +the head of the +[Computer Languages and Systems Software (CLaSS)](https://crd.lbl.gov/divisions/amcr/computer-science-amcr/class/) +group at the Lawrence Berkeley National Lab. +Fortran-lang had a dedicated session (a Fortran-lang minisymposium) on the +second day of the conference, with the talks about specific Fortran-lang +projects as well as the Google Summer of Code student presentations. +FortranCon was hosted at the University of Zurich (UZH), and organized by +[Tiziano Müller](https://github.com/dev-zero) from UZH and +[Alfio Lazzaro](https://github.com/alazzaro) from Hewlett-Packard Enterprise. +You can watch all FortranCon 2021 talks [here](https://www.youtube.com/playlist?list=PLeKbr7eYHjt5UaV9zQtY24oEbne9_uFni). + +### PackagingCon 2021 + +Another big event for Fortran-lang was +[PackagingCon 2021](https://packaging-con.org/), a conference dedicated to +package management software and its community of developers. +[Sebastian Ehlert](https://github.com/awvwgk) presented fpm--you can watch the +recording below: + +
+ +
+ +### Papers + +This year two papers have been written about Fortran-lang projects. +The first paper documents the motivation and goals of +Fortran-lang: "Toward Modern Fortran Tooling and a Thriving Developer +Community" by Milan Curcic, Ondřej Čertík, Brad Richardson, Sebastian Ehlert, +Laurence Kedward, Arjen Markus, Ivan Pribec, and Jérémie Vandenplas +([https://arxiv.org/abs/2109.07382](https://arxiv.org/abs/2109.07382)). + +
+ + + +
+ +If Fortran-lang has been helpful in your work and if you want to cite this paper, +here's the citation info: + +```bibtex +@article{curcic2021toward, + title={Toward Modern Fortran Tooling and a Thriving Developer Community}, + author={Curcic, Milan and + {\v{C}}ert{\'\i}k, Ond{\v{r}}ej and + Richardson, Brad and + Ehlert, Sebastian and + Kedward, Laurence and + Markus, Arjen and + Pribec, Ivan and + Vandenplas, J{\'e}r{\'e}mie}, + journal={arXiv preprint arXiv:2109.07382}, + year={2021} +} +``` + +We have also submitted a paper draft to IEEE's +[Computing in Science & Engineering (CiSE)](https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992) +journal, titled "The State of Fortran" and led by +[Laurence Kedward](https://github.com/lkedward). +For this paper, we have +[publicly invited on Discourse](https://fortran-lang.discourse.group/t/fortran-lang-community-paper/1232) +anybody in the Fortran-lang community to participate. +Once published, this will be another paper that you can cite. +Stay tuned for its publication. + +## Summary + +- 2021 is behind us as another productive year. +- Fortran-lang flagship projects such as + [stdlib](https://github.com/fortran-lang/stdlib), + [fpm](https://github.com/fortran-lang/fpm), + [fortran-lang.org](https://fortran-lang.org), and + [LFortran](https://lfortran.org) continue to grow and gain traction. +- New Fortran-lang projects include + [fftpack](https://github.com/fortran-lang/fftpack), + [test-drive](https://github.com/fortran-lang/test-drive), and + [fpm-docs](https://github.com/fortran-lang/fpm-docs). +- Fortran-lang participated in the + [Google Summer of Code](https://summerofcode.withgoogle.com/) program for + the first time, and had 6 students working on projects across stdlib, fpm, + and LFortran. +- We had several presentations of Fortran-lang projects at + [FortranCon 2021](https://www.youtube.com/playlist?list=PLeKbr7eYHjt5UaV9zQtY24oEbne9_uFni) and + [PackagingCon 2021](https://www.youtube.com/watch?v=YG8zEM1lAVM). +- New Fortran-lang [paper](https://arxiv.org/abs/2109.07382) is out and + another is in review. + +## Thanks + +We thank all people who contributed to Fortran-lang projects and discussions +on GitHub, Fortran Discourse, Fortran-lang mailing list, Twitter, and +elsewhere. +It wouldn't have been possible without you all. + +```fortran +end program fortran_lang_2021 +``` diff --git a/_sources/news/2022/01-01-Fortran-Newsletter-January-2022.md.txt b/_sources/news/2022/01-01-Fortran-Newsletter-January-2022.md.txt new file mode 100644 index 000000000000..8128efac5c95 --- /dev/null +++ b/_sources/news/2022/01-01-Fortran-Newsletter-January-2022.md.txt @@ -0,0 +1,320 @@ +--- +category: newsletter +date: 2022-01-01 +author: Milan Curcic, Sebastian Ehlert, Jérémie Vandenplas, Alexis Perry-Holby, Ondřej Čertík +... + +# Fortran newsletter: January 2022 + +Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new and ongoing in the fortran-lang.org repo: + +- [#349](https://github.com/fortran-lang/fortran-lang.org/pull/349): + Newsletter draft for December 2021 +- [#350](https://github.com/fortran-lang/fortran-lang.org/pull/350): + Updated CaNS item so that it shows the version +- [#353](https://github.com/fortran-lang/fortran-lang.org/pull/353): + Add MCST LCC C, C++ and Fortran compiler +- [#351](https://github.com/fortran-lang/fortran-lang.org/pull/351): + Use HEAD to reference default branch +- [#355](https://github.com/fortran-lang/fortran-lang.org/pull/355): + 2021 review article draft +- [#356](https://github.com/fortran-lang/fortran-lang.org/pull/356) (WIP): + Adding Fortran Error Handler to packages index + +### Work in progress + +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#500](https://github.com/fortran-lang/stdlib/pull/500): + Selection algorithms +- [#586](https://github.com/fortran-lang/stdlib/pull/586): + Update of stdlib_stats.md +- [#581](https://github.com/fortran-lang/stdlib/pull/581): + Add routines for saving/loading arrays in npy format +- [#590](https://github.com/fortran-lang/stdlib/pull/590): + Update changelog +- [#588](https://github.com/fortran-lang/stdlib/pull/588): + Error on no tests in CTest +- [#585](https://github.com/fortran-lang/stdlib/pull/585): + stdlib_selection: correction of typos and addition of some checks +- [#591](https://github.com/fortran-lang/stdlib/pull/591): + Fix compilation errors with makefiles due to command-line variable assignments +- [#273](https://github.com/fortran-lang/stdlib/pull/273): + Probability Distribution and Statistical Functions -- Normal Distribution Module +- [#584](https://github.com/fortran-lang/stdlib/pull/584): + Replace the call to sort by select in stdlib_stats_median +- [#593](https://github.com/fortran-lang/stdlib/pull/593): + Probability Distribution and Statistical Functions -- Uniform Distribution Module +- [#594](https://github.com/fortran-lang/stdlib/pull/594): + Minor update to makefile installation instructions +- [#596](https://github.com/fortran-lang/stdlib/pull/596): + Rename references to default branch +- [#600](https://github.com/fortran-lang/stdlib/pull/600): + Fix iomsg allocation in save_npy +- [#488](https://github.com/fortran-lang/stdlib/pull/488): + [stdlib_math] add `is_close` routines. +- [#597](https://github.com/fortran-lang/stdlib/pull/597): + Add getline to read whole line from formatted unit +- [#498](https://github.com/fortran-lang/stdlib/pull/498): + [stdlib_math] add `arg/argd/argpi` +- [#603](https://github.com/fortran-lang/stdlib/pull/603): + Implement trueloc/falseloc +- [#573](https://github.com/fortran-lang/stdlib/pull/573): + Revised Hash functions incorporating changes in the main Stdlib repository. +- [#609](https://github.com/fortran-lang/stdlib/pull/609): + Consistent spec titles +- [#610](https://github.com/fortran-lang/stdlib/pull/610): + Fixed tables in stdlib_hash_procedures.md +- [#499](https://github.com/fortran-lang/stdlib/pull/499): + [stdlib_linalg] matrix property checks +- [#613](https://github.com/fortran-lang/stdlib/pull/613): + Ignore hash testing binaries and logs + +### Work in progress + +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#605](https://github.com/fortran-lang/stdlib/pull/605) (WIP): + [stdlib_math] Add function `diff` +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#276](https://github.com/fortran-lang/stdlib/pull/276) (WIP): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#634](https://github.com/fortran-lang/fpm/pull/634): + Better extraction of the Fortran compiler from the MPI wrapper + +### Work in progress + +- [#642](https://github.com/fortran-lang/fpm/pull/642) (WIP): + Replace polymorphic assignment with move_alloc +- [#630](https://github.com/fortran-lang/fpm/pull/630) (WIP): + allow backfilling of current directory in fpm-new subcommand +- [#622](https://github.com/fortran-lang/fpm/pull/622) (WIP): + Cleanup the backend output +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- FIR + - Add fir.box_isarray, fir.box_isptr and fir.box_isalloc conversion. + - Add !fir.vector type conversion + - Add type conversion for `fir.boxchar` + - Add !fir.alloca conversion + - Add placeholder conversion pattern for disptach operations + - Add fir.select_case conversion + - Add !fir.field type conversion + - Transform `IsPresentOpConversion` and `AbsentOpConversion` + - Add type conversion for FIR heap type + - Add type conversion for FIR integer kind + - Add !fir.len type conversion + - Transform `fir.emboxchar` to a sequence of LLVM MLIR + - Add fir.select_type conversion placeholder + - Remove extra return in SelectTypeOpConversion + - Transform `fir.unboxchar` to a sequence of LLVM MLIR + - Add fir.global_len conversion placeholder + - Add the FIR LLVMPointer Type + - Add fir.cmpc conversion + - Add fir.gentypedesc conversion + - Transform `fir.boxchar_len` to a sequence of LLVM MLIR + - Add missing `HasParent` in `fir_DTEntryOp` + - Add fir.string_lit conversion + - Add conversion patterns for slice, shape, shapeshift and shift ops + - Add fir.box_tdesc conversion + - !fir.tdesc type conversion + - Add fir.constc conversion + - Add fir.embox conversion + - Notify conversion failure for Proc ops, types + - Add tests for mlir::ComplexType conversion + - Add `fir.end` conversion placeholder + - Transform `fir.field_index` to a sequence of LLVM MLIR + - Add a factory class for creating Complex Ops + - Add fir.no_reassoc conversion + - Set !fir.len_param_index conversion to unimplemented + - Add base for runtime builder unittests + - Add fir transformational intrinsic builder + - Add assignment runtime API builder + - Add data flow optimization pass + - Add array value copy pass + - Add fir reduction builder + - Add fir numeric intrinsic runtime call builder + - Add fircg.ext_embox conversion + - Add fir derived type runtime builder + - Add fir character builder + - Add fircg.ext_array_coor conversion + - Upstream conversion of the XRebox Op + - Convert fir.allocmem and fir.freemem operations to calls to malloc and free, respectively +- Runtime + - Fix vector cshift runtime with non zero lower bounds + - Respect NO_STOP_MESSAGE=1 in runtime + - Runtime performance improvements to real formatted input + - Allow write after non advancing read in IO runtime + - Fix reversed comparison in RESHAPE() runtime + - Define & implement a lowering support API IsContiguous() in runtime + - Don't close stderr in runtime (fixes STOP output) + - Return arrays in Transfer runtime with SIZE argument + - Fix INQUIRE(FILE=,NAME=) + - Add ragged array runtime functions +- Allow exterior branch to outermost WHERE construct statement +- Fix ORDER= argument to RESHAPE +- Fix rounding edge case in F output editing +- Handle ENTRY names in IsPureProcedure() predicate +- Allow implicit procedure pointers to associate with explicit procedures +- Fix a bug in INQUIRE(IOLENGTH=) output +- Remove default argument from function template specialization +- Check ArrayRef base for contiguity in IsSimplyContiguousHelper +- Deal with negative character lengths in semantics +- Fix INQUIRE(PAD=) and (POSITION=) for predefined units +- Add a semantics test for co_sum +- Fix off-by-one results from folding MAXEXPONENT and MINEXPONENT +- Skip `Fortran STOP:` before message when NO_STOP_MESSAGE is set +- Fix printing of constc and parsing of #fir.real +- Predefine unit 0 connected to stderr +- Add -fno-automatic, refine IsSaved() +- Correct the argument keyword for AIMAG(Z=...) +- Inclusive language: remove instances of master +- Return true in IsSymplyContiguous for allocatables +- Fix usage & catch errors for MAX/MIN with keyword= arguments +- Re-fold bounds expressions in DATA implied DO loops +- Correct INQUIRE(POSITION= & PAD=) +- Rearrange prototype & code placement of IsCoarray() +- Replace notifyMatchFailure with TODO hard failures +- TargetRewrite: Rewrite fir.address_of(func) +- Fix folding of EXPONENT() intrinsic function +- OPEN(RECL=) handling for sequential formatted I/O +- Avoid potential deadlock in CloseAll() + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- Beginning of refactoring of ASR (Abstract Semantic Representation) into a standalone library +- New intrinsics: mvbits, bge, bgt, ble, blt, ibits +- generic procedure resolution fixes +- FreeBSD fixes +- Implement `.xor.` (LFortran as well as GFortran extension) +- Fixes to large integers (BigInt) handling +- Added support for `private`, `final` attributes in derived types/classes + +The following people contributed code in December 2021: Ondřej Čertík, Gagandeep Singh, Harris Snyder + +We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed. + +## Events + +- fpm has a new documentation website hosted at + [fpm.fortran-lang.org](https://fpm.fortran-lang.org/). + This website will provide user-oriented tutorials and how-to guides, as well + as developer-oriented reference documents and specifications. + We welcome all contributions to the fpm documentation, including translations + to other languages. + Please visit the [fpm-docs repo](https://github.com/fortran-lang/fpm-docs) to + get started. +- We had our 21st Fortran Monthly call on December 14. + You can watch the recording below: + +- We also wrote a review of the Fortran-lang projects in 2021. Read it + [here](Fortran-lang-2021-in-review). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2022/02-01-Fortran-Newsletter-February-2022.md.txt b/_sources/news/2022/02-01-Fortran-Newsletter-February-2022.md.txt new file mode 100644 index 000000000000..5642ce250dbd --- /dev/null +++ b/_sources/news/2022/02-01-Fortran-Newsletter-February-2022.md.txt @@ -0,0 +1,284 @@ +--- +category: newsletter +date: 2022-02-01 +author: Jérémie Vandenplas, Alexis Perry-Holby, Sebastian Ehlert, Gagandeep Singh, Milan Curcic +... + +# Fortran newsletter: February 2022 + +Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new and ongoing in the fortran-lang.org repo: + +- [#369](https://github.com/fortran-lang/fortran-lang.org/pull/369): + Resolves Issue #217 +- [#359](https://github.com/fortran-lang/fortran-lang.org/pull/359): + Fix time calculation in the PRs script + +### Work in progress + +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#276](https://github.com/fortran-lang/stdlib/pull/276): + Probability Distribution and Statistical Functions -- Exponential Distribution Module +- [#605](https://github.com/fortran-lang/stdlib/pull/605): + [stdlib_math] Add function `diff` +- [#613](https://github.com/fortran-lang/stdlib/pull/613): + Ignore hash testing binaries and logs +- [#617](https://github.com/fortran-lang/stdlib/pull/617): + Made format constant public +- [#622](https://github.com/fortran-lang/stdlib/pull/622): + Fix Gauss quadrature + +### Work in progress + +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#630](https://github.com/fortran-lang/fpm/pull/630): + allow backfilling of current directory in fpm-new subcommand +- [#646](https://github.com/fortran-lang/fpm/pull/646): + Respect user provided main-files +- [#645](https://github.com/fortran-lang/fpm/pull/645): + Update module output directory command for flang-new/f18 +- [fpm-docs#47](https://github.com/fortran-lang/fpm-docs/pull/47) + [fpm-docs#46](https://github.com/fortran-lang/fpm-docs/pull/46) + [fpm-docs#45](https://github.com/fortran-lang/fpm-docs/pull/45) + [fpm-docs#44](https://github.com/fortran-lang/fpm-docs/pull/44) + [fpm-docs#41](https://github.com/fortran-lang/fpm-docs/pull/41) + [fpm-docs#39](https://github.com/fortran-lang/fpm-docs/pull/39): + French translation +- [fpm-docs#43](https://github.com/fortran-lang/fpm-docs/pull/43): + Add testing workflow for source examples +- [fpm-docs#40](https://github.com/fortran-lang/fpm-docs/pull/40): + Update Spanish translation +- [fpm-docs#37](https://github.com/fortran-lang/fpm-docs/pull/37): + zh_CN: Update Chinese translations + +### Work in progress + +- [#654](https://github.com/fortran-lang/fpm/pull/654) (WIP): + Ignore hidden source files +- [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): + Enable profiles in toml +- [#652](https://github.com/fortran-lang/fpm/pull/652) (WIP): + Get user name and email using got config if available else use defaults +- [#648](https://github.com/fortran-lang/fpm/pull/648) (WIP): + Add note about relocation of manifest reference +- [#622](https://github.com/fortran-lang/fpm/pull/622) (WIP): + Cleanup the backend output +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +* [fpm-docs#42](https://github.com/fortran-lang/fpm-docs/issues/42) (WIP): + Dutch translation +* [fpm-docs#48](https://github.com/fortran-lang/fpm-docs/pull/48) (WIP): + Chinese translation improvements + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- FIR + - Keep runtime function name in comment + - Add a conversion for !fir.coordinate_of + - Add a new memory allocation rewrite pass. + - Correct and reenable test that was removed by MLIR. + - Fix overallocation by fir-to-llvm-ir pass +- OpenMP + - Add some semantic checks for threadprivate and declare target directives +- Simplify RaggedArrayHeader and make it plain C struct +- Fix folding of ac-implied-do indices in structure constructors +- Avoid code duplication in mixed expressions +- Add test with shape for allocmem and freemem +- Make the frontend driver error out when requesting multiple actions +- Add semantics tests for co_reduce, co_min, and co_max +- Use GNUInstallDirs to support custom installation dirs. +- Enable support for conversion of recursive record types +- Separate temporary and user-specified object files +- update to reflect MLIR LLVM::GEPOp changes +- Do not lose call in shape inquiry on function reference +- Fix the documentation on how to build flang +- Add tests for converting arrays and refs to arrays +- Make the "flang" wrapper script check the Bash version +- Fix handling of space between # and name in preprocessor stringification +- RESHAPE(PAD=) can be arbitrary array rank +- Any type can appear in a structure constructor for an unlimited polymorphic allocatable component +- Implement semantics for DEC STRUCTURE/RECORD +- Extension: initialization of LOGICAL with INTEGER & vice versa +- Allow initialization in blank COMMON +- Support extension intrinsic function variations on ABS +- Allow pointers to non-sequence types in sequence types +- "CFI" types for Fortran REAL and COMPLEX kinds 2, 3, 10, 16 +- Legacy extension: non-character formats +- Signal runtime error on WRITE after ENDFILE +- Don't blank-fill remaining lines in internal output +- Accept ENTRY names in generic interfaces +- Support substring references in NAMELIST input + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +**Compiling `stdlib` with `lfortran`** + +- [stdlib: Implement `AINT` intrinsic Procedure](https://gitlab.com/lfortran/lfortran/-/merge_requests/1638) +- [Draft: Sprint Bug fixing to compile stdlib with LFortran](https://gitlab.com/lfortran/lfortran/-/merge_requests/1644) + +**Addition of ASR Optimization Passes** + +- [Added pass for converting division to multiplication operation](https://gitlab.com/lfortran/lfortran/-/merge_requests/1647) +- [Adding LLVM backend for flip sign](https://gitlab.com/lfortran/lfortran/-/merge_requests/1649) + +**`libasr`** + +- [Move more header files into libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1620) +- [Move exception.h to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1621) +- [Move string_utils.h/cpp to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1622) +- [Move location.h to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1623) +- [Move stacktrace.h/cpp to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1624) +- [Move colors.h and asr_scopes.h to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1625) +- [Move bwriter.h and modfile.h to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1626) +- [Move config.h to libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1627) +- [CI: do not run parent cmake in libasr test](https://gitlab.com/lfortran/lfortran/-/merge_requests/1628) +- [Split serialization.h/cpp](https://gitlab.com/lfortran/lfortran/-/merge_requests/1629) +- [Nullify in ASR, LLVM, scalar types](https://gitlab.com/lfortran/lfortran/-/merge_requests/1630) +- [Remove unused SymbolTable::get_hash()](https://gitlab.com/lfortran/lfortran/-/merge_requests/1631) +- [Separate evaluators into LFortran and libasr parts](https://gitlab.com/lfortran/lfortran/-/merge_requests/1632) +- [utils.h and parser.h split into lfortran/libasr parts](https://gitlab.com/lfortran/lfortran/-/merge_requests/1633) +- [Expose rl_path from libasr](https://gitlab.com/lfortran/lfortran/-/merge_requests/1634) +- [CI: build libasr in an isolated directory](https://gitlab.com/lfortran/lfortran/-/merge_requests/1635) +- [Use the libasr's CMakeLists in LFortran's one](https://gitlab.com/lfortran/lfortran/-/merge_requests/1636) +- [Refactored `libasr/pass` framework and some bug fixes](https://gitlab.com/lfortran/lfortran/-/merge_requests/1645) + +**Miscellaneous** + +- [fixes for windows compilation (defining NOMINMAX), installation-instructions for Windows/Visual Studio](https://gitlab.com/lfortran/lfortran/-/merge_requests/1639) +- [Update gitignore](https://gitlab.com/lfortran/lfortran/-/merge_requests/1643) +- [Update ASR from LPython](https://gitlab.com/lfortran/lfortran/-/merge_requests/1646) +- [Abstracting out, visit_Program, visit_Subroutine, visit_Function, state variables from passes](https://gitlab.com/lfortran/lfortran/-/merge_requests/1648) +- [Draft: Add a test for pywrap](https://gitlab.com/lfortran/lfortran/-/merge_requests/1637) +- [Fix order deps ordered](https://gitlab.com/lfortran/lfortran/-/merge_requests/1640) +- [link to static zlib to avoid runtime dependency](https://gitlab.com/lfortran/lfortran/-/merge_requests/1641) + +**Contributors** + +- [Ondřej Čertík](https://gitlab.com/certik) +- [Gagandeep Singh](https://gitlab.com/czgdp18071) +- [Dominic Poerio](https://gitlab.com/dpoe) +- [Tobias Loew](https://gitlab.com/tobias-loew) +- [Thirumalai Shaktivel](https://gitlab.com/Thirumalai-Shaktivel) + +We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed. + +## Events + +- fpm has a new documentation website hosted at + [fpm.fortran-lang.org](https://fpm.fortran-lang.org/). + This website will provide user-oriented tutorials and how-to guides, as well + as developer-oriented reference documents and specifications. + We welcome all contributions to the fpm documentation, including translations + to other languages. + Please visit the [fpm-docs repo](https://github.com/fortran-lang/fpm-docs) to + get started. +- We had our 22st Fortran Monthly call on January 17. + You can watch the recording below: + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2022/03-09-Fortran-Newsletter-March-2022.md.txt b/_sources/news/2022/03-09-Fortran-Newsletter-March-2022.md.txt new file mode 100644 index 000000000000..88c2d5e7e568 --- /dev/null +++ b/_sources/news/2022/03-09-Fortran-Newsletter-March-2022.md.txt @@ -0,0 +1,302 @@ +--- +category: newsletter +date: 2022-03-09 +author: Milan Curcic, Alexis Perry-Holby, Ondřej Čertík +... + +# Fortran newsletter: March 2022 + +Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new in the fortran-lang.org repo: + +- [#369](https://github.com/fortran-lang/fortran-lang.org/pull/369): + Resolves Issue #217 +- [#359](https://github.com/fortran-lang/fortran-lang.org/pull/359): + Fix time calculation in the PRs script + +### Work in progress + +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#624](https://github.com/fortran-lang/stdlib/pull/624): + [stdlib_math] Minor update to `stdlib_math` module and document + +### Work in progress + +- [#625](https://github.com/fortran-lang/stdlib/pull/625) (WIP): + Gamma special function +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#652](https://github.com/fortran-lang/fpm/pull/652): + get user name and email using git config if available else use defaults +- [#654](https://github.com/fortran-lang/fpm/pull/654): + Ignore hidden source files +- [#622](https://github.com/fortran-lang/fpm/pull/622): + Cleanup the backend output +- [#648](https://github.com/fortran-lang/fpm/pull/648): + Add note about relocation of manifest reference + +* [fpm-docs#42](https://github.com/fortran-lang/fpm-docs/issues/42): + Dutch translation +* [fpm-docs#48](https://github.com/fortran-lang/fpm-docs/pull/48): + Chinese translation improvements +* [fpm-docs#52](https://github.com/fortran-lang/fpm-docs/pull/52): + Update plugin tutorial + +### Work in progress + +- [#665](https://github.com/fortran-lang/fpm/pull/665) (WIP): + add clean command +- [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): + Enable profiles in toml +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +* [fpm-docs#51](https://github.com/fortran-lang/fpm-docs/pull/51) (WIP): + Add page about fpm logo + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- FIR + - Initial lowering for empty program + - Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic + - Add lowering placeholders + - Add lowering for basic empty SUBROUTINE + - Upstream partial lowering of EXIT intrinsic + - Lower basic STOP statement + - Lower PAUSE statement + - Add lowering for integer constant + - Lower integer constant code for STOP stmt + - Add fir.array_access op + - Add fir.array_amend operation definition + - Handle logical constant value for quiet in STOP stmt + - Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic + - Basic local variable lowering + - Add lowering for ASCII character constant + - Handle character constant for error code in STOP stmt + - Upstream partial lowering of GET_ENVIRONMENT_VARIABLE intrinsic + - Add missing CFI case for REAL and COMPLEX + - Add support for lowering the goto statement + - Add type conversion for !fir.box + - Add FIRInlinerInterface + - Lower simple RETURN statement + - Upstream fix to allocmem codegen to deal with missing dimensions for sequence of character types + - Lower basic function with scalar integer/logical return value + - Enable scalar real type in lowering + - Enable complex type in function lowering + - Handle lowering of ranked array + - Lower simple scalar assignment + - Lower scalar negation + - Lower basic binary operation for scalars + - Initial patch to lower a Fortran intrinsic + - Lower real constant + - Lower complex constant + - Lower function and subroutine calls + - Handle allocatable dummy arguments + - Lower allocatable assignment for scalar + - Simple array assignment lowering + - Lower simple character return + - Lower Fortran intrinsic to a runtime call/llvm intrinsic + - Lower integer comparison operation + - Lower real comparison operations + - Lower logical comparison and logical operations + - Lower power operations + - Add complex operations lowering tests + - Lower basic IO statement + - Handle dynamic array lowering +- Driver + - Add support for `-emit-mlir` + - Add support for `-emit-llvm` + - Make `flang-new` always generate run-time type info + - Add support for `--target`/`--triple` +- OpenMP + - Added OpenMP 5.0 specification based semantic checks for atomic update construct + - The device expression must evaluate to a non-negative integer value + - Remove clauses from OpenMP Dialect that are handled by the flang frontend instead: + - private, firstprivate, lastprivate, shared, default, copyin, copyprivate +- Runtime + - Implement a runtime routine to report fatal errors with source position + - Rename the runtime routine that reports a fatal user error + - runtime perf: larger I/O buffer growth increments + - Add runtime interface for GET_COMMAND + - Upstream runtime changes for inquiry intrinsics +- Improve error message (initialized variable in pure subprogram) +- Accept BOZ literals for some actual arguments +- Accept sparse argument keyword names for MAX/MIN +- Accept INDEX(..., BACK=array) +- Fix OPEN/WRITE(SIGN='SUPPRESS') +- Handle FLUSH(unknown unit) +- Allow explicit '+' in NAMELIST input subscripts +- Extension: skip over NAMELIST groups +- Add array operations documentation +- Fix crash from USE-associated defined I/O subprograms +- Allow INQUIRE() on a child unit in user-defined I/O procedure +- Don't drop format string for external child I/O +- Support DECIMAL='COMMA' mode in namelist I/O +- Update tco tool pipline and add translation to LLVM IR +- Add MemoryAllocation pass to the pipeline +- Add ieee_is_normal/ieee_is_negative to ieee_arithmetic module. +- Add a custom target for the "flang" wrapper script. +- split character procedure arguments in target-rewrite pass +- Expand the semantics test for co_sum +- Correct interpretation of RECL= +- Distinguish intrinsic from non-intrinsic modules +- Make NEWUNIT= use a range suitable for INTEGER(KIND=1) and recycle unit numbers +- Modify right modes for READ/WRITE vs OPEN +- Add a semantics test for co_broadcast +- catch implicit interface incompatibility with global scope symbol +- Add an assert to guard against nullptr dereferencing +- Fix FlangOptimizerTests link on Solaris +- Handle "type(foo) function f" when foo is defined in f +- Refine pointer/target test for ASSOCIATED intrinsic +- Allow mixed association of procedure pointers and targets +- Fix edge case in USE-associated generics +- Fail at link time if derived type descriptors were not generated +- Allow for deferred-length character in EstablishDescriptor +- Allow DATA initialization of derived types w/ allocatable components +- Accept NULL(mold=x) as constant component value in constant structure constructor +- Ensure a characterized ENTRY in a PURE subprogram is also marked PURE +- Accept structure constructor value for polymorphic component +- Remove deprecated parser/printer/verifier utilities +- Accept pointer assignment w/ remapping to function result +- Allow extension cases of EQUIVALENCE with optional warnings +- Handle CALL C_F_POINTER(without SHAPE=) +- Make source location more accurate for actual arguments +- Add Win32 to the list of supported triples +- Allow tabs as white space in formats +- Do not print format tabs +- Catch I/O of bad derived type at compile time +- Allow more concurrently open NEWUNIT= values, with recycling + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +- LFortran is participating in GSoC, please see [GSoC 2022 Student Instructions for LFortran](https://gitlab.com/lfortran/lfortran/-/wikis/GSoC%202022%20Student%20Instructions) for instructions how to apply +- 19 Merge Requests merged +- New ASR optimizations +- Addes support for fma (fused-multiply add) in LLVM +- Semantic improves to compile more of stdlib + +We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed. + +## Events + +- Fortran-lang has been selected as a mentoring organization for Google Summer of Code 2022! + Thanks to everybody who helped prepare the application. + [GSoC](https://summerofcode.withgoogle.com/) is Google's global, online program that allows newcomers to open-source to work on a project and get paid for it. + See the [Fortran-lang GSoC 2022 page](https://summerofcode.withgoogle.com/programs/2022/organizations/fortran-lang) for information about the projects and how to apply. + Applications for contributors open **April 4** and close **April 19**. + To learn more about GSoC and what has changed since last year, please see the [GSoC 2022 announcement](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html). + If you'd like to participate as a contributor or a mentor, please let us know in this thread and we'll help you get started. +- Fortran-lang community now maintains a modernized fork of the classic library + [minpack](https://github.com/fortran-lang/minpack). Give it a try! +- We had our 23rd Fortran Monthly call on February 15. + You can watch the recording below: + +- US Fortran Standards Committee meeting #226 started on February 28. + See the draft agenda [here](https://j3-fortran.org/doc/year/22/agenda226.txt) + and the submitted papers [here](https://j3-fortran.org/doc/meeting/226). + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/minpack](https://github.com/fortran-lang/minpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2022/04-07-Fortran-Newsletter-April-2022.md.txt b/_sources/news/2022/04-07-Fortran-Newsletter-April-2022.md.txt new file mode 100644 index 000000000000..35bea490b3b3 --- /dev/null +++ b/_sources/news/2022/04-07-Fortran-Newsletter-April-2022.md.txt @@ -0,0 +1,275 @@ +--- +category: newsletter +date: 2022-04-07 +author: Milan Curcic, Alexis Perry-Holby +... + +# Fortran newsletter: April 2022 + +Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new in the fortran-lang.org repo: + +- [#379](https://github.com/fortran-lang/fortran-lang.org/pull/379): + Newsletter for March 2022 +- [#383](https://github.com/fortran-lang/fortran-lang.org/pull/383): + Updated VS Code extensions +- [#381](https://github.com/fortran-lang/fortran-lang.org/pull/381): + add string array to learn +- [#384](https://github.com/fortran-lang/fortran-lang.org/pull/384): + Resolves typos #377 + +### Work in progress + +- [#369](https://github.com/fortran-lang/fortran-lang.org/pull/369) (WIP): + Resolves Issue #217 +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#632](https://github.com/fortran-lang/stdlib/pull/632): + doc: fix some typos +- [#629](https://github.com/fortran-lang/stdlib/pull/629): + option to disable testing by setting BUILD_TESTING to OFF +- [#631](https://github.com/fortran-lang/stdlib/pull/631): + Preparation for 0.2.0 release +- [#637](https://github.com/fortran-lang/stdlib/pull/637): + Only set Fortran arguments for Fortran compiler +- [#642](https://github.com/fortran-lang/stdlib/pull/642): + Fix linking issue with shared libraries + +### Work in progress + +- [#625](https://github.com/fortran-lang/stdlib/pull/625) (WIP): + Gamma special function +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#675](https://github.com/fortran-lang/fpm/pull/675): + Fix for backtrace error when file not found in: src/fpm_source_parsing.f90 +- [#677](https://github.com/fortran-lang/fpm/pull/677): + Fix issue with backend pretty output +- [#684](https://github.com/fortran-lang/fpm/pull/684): + fix: remove remove unnecessary space in fpm new cmd +- [#8](https://github.com/fortran-lang/setup-fpm/pull/8) (`setup-fpm`): + Update to v4 in usage example in README + +### Work in progress + +- [#685](https://github.com/fortran-lang/fpm/pull/685) (WIP): + fix: function for getting executable path +- [#676](https://github.com/fortran-lang/fpm/pull/676) (WIP): + Tree shaking for modules +- [#671](https://github.com/fortran-lang/fpm/pull/671) (WIP): + Add `library-dir` to support `-Lpath` +- [#665](https://github.com/fortran-lang/fpm/pull/665) (WIP): + add clean command +- [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): + Enable profiles in toml +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- FIR + - Lower IO open and close statements + - Lower basic IO file statements + - Lower inquire statement + - Handle module in lowering pass + - Lower more cases of assignments on allocatable variables + - Add lowering for host association + - Lower allocate and deallocate statements + - Lower sum intrinsic + - Lower computed and assigned goto + - Lower associate construct + - Update ArrayValueCopy to support array_amend and array_access + - Lower more array character cases + - Lower basic derived types + - Lower where statement + - Lower general forall statement + - Lower pointer component in derived type + - Lower of elemental calls in array expression + - Add tests for allocatable global + - Add support for linkonce_odr in FIR + - Lower elemental calls + - Lower ALL intrinsic + - Lower common block + - Lower format statement + - Write a pass to annotate constant operands on FIR ops + - Lower ANY intrinsic + - Add support for lowering the dot_product intrinsic + - Add support for lowering the dim intrinsic + - Add support for lowering of the ibits intrinsic + - Lower more pointer assignments/disassociation cases + - Lower entry statement + - Lower alternate return + - Lower allocated intrinsic + - Add lowering for the following character related intrinsics: len, len_trim, lge, lgt, lle and llt + - Adds lowering for min/max intrinsics: max, maxloc, maxval, minloc, minval + - Lower random\_[init|number|seed] intrinsics + - Lower date_and_time and cpu_time intrinsics + - Lower system_clock intrinsic + - Add support for lowering of the ibset intrinsic + - Lower transfer instrinsic + - Lower adjustl and adjustr intrinsics + - Lower count intrinsic + - Add lowering for the set_exponent intrinsic +- Driver + - Add support for -debug-dump-pft + - Add support for -S and implement -c/-emit-obj + - Add support for -mllvm +- OpenMP + - [mlir]Generating enums in accordance with the guidelines + - Added basic connect to lower OpenMP constructs + - Support for dump OpenMP/OpenACC declarative directives PFT in module + - Add OpenMP and OpenACC flags to bbc +- Allow data transfer stmt control list errors to be caught +- Extension: don't require commas between most edit descriptors in formats +- Fix result type of "procedure(abs) :: f" +- Catch READ/WRITE on direct-access file without REC= +- Honor RECL= in list-directed/namelist output +- Accommodate module subprograms defined in the same module +- Extend ProvenanceRange::Suffix() to handle crash case +- Remove bogus messages for actual/dummy procedure argument compatibility +- Support PDT type descriptors in codegen +- Handle optional TARGET associate in ASSOCIATED runtime +- Generate PDT runtime type info in the type definition scope +- Accommodate arrays with a zero-extent dimension in location folding +- Avoid crash case in provenance mapping +- Make per-argument intrinsic error messages more localized +- Use faster path for default formatted character input +- Runtime validation of SPREAD(DIM=dim) argument +- Make uninitialized allocatable components explicitly NULL() in structure constructors +- Fix module file missing USE for shadowed derived type +- Add nonfatal message classes +- Distinguish usage and portability warning messages +- Use unix logical representation for fir.logical +- Fix extent computation in finalization +- Fix processing ModuleLikeUnit evaluationList +- Do not return true for pointer sub-object in IsPointerObject +- Fix DYLIB builds +- Improve runtime crash messages +- Add runtime support for GET_COMMAND +- IEEE_ARITHMETIC must imply USE IEEE_EXCEPTIONS +- LBOUND() edge case: empty dimension +- Hanlde COMPLEX 2/3/10 in runtime TypeCode(cat, kind) +- fulfill -Msave/-fno-automatic in main programs too +- Relax fir.rebox verifier with characters + +Call notes are recorded and available upon request [here](https://docs.google.com/document/d/10T-S2J3GrahpG4Ooif93NSTz2zBW0MQc_RlwHi0-afY). Please contact Alexis Perry-Holby at aperry@lanl.gov for document access. + +### LFortran + +We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed. + +## Events + +- The "State of Fortran" paper by Kedward et al. has been accepted for publication in the IEEE journal Computing in Science and Engineering (CiSE). + You can read the pre-print on [arXiv](https://arxiv.org/abs/2203.15110), or find the paper in Early Access on the [CiSE website](https://ieeexplore.ieee.org/document/9736688). +- The contributor application window for this year's [Google Summer of Code](https://summerofcode.withgoogle.com) is approaching fast. + It opens **April 4** and closes **April 19**. + See the [Fortran-lang GSoC 2022 page](https://summerofcode.withgoogle.com/programs/2022/organizations/fortran-lang) for information about the projects and how to apply. + To learn more about GSoC and what has changed since last year, please see the [GSoC 2022 announcement](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html). + If you'd like to participate, please let us know and we'll help you get started. +- We had our 24th Fortran Monthly call on March 15. + You can watch the recording below: + + +As usual, subscribe to the [mailing list](https://groups.io/g/fortran-lang) and/or +join the [Discourse](https://fortran-lang.discourse.group) to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/minpack](https://github.com/fortran-lang/minpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2022/05-05-Fortran-Newsletter-May-2022.md.txt b/_sources/news/2022/05-05-Fortran-Newsletter-May-2022.md.txt new file mode 100644 index 000000000000..7c93a1ef6e7f --- /dev/null +++ b/_sources/news/2022/05-05-Fortran-Newsletter-May-2022.md.txt @@ -0,0 +1,395 @@ +--- +category: newsletter +date: 2022-05-05 +author: Milan Curcic, Alexis Perry-Holby, Giannis Nikiteas, Gagandeep Singh +... + +# Fortran newsletter: May 2022 + +Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new in the fortran-lang.org repo: + +- [#359](https://github.com/fortran-lang/fortran-lang.org/pull/359): + Fix time calculation in the PRs script +- [#387](https://github.com/fortran-lang/fortran-lang.org/pull/387): + Newsletter for April 2022 +- [#389](https://github.com/fortran-lang/fortran-lang.org/pull/389): + Add librsb to package index +- [#390](https://github.com/fortran-lang/fortran-lang.org/pull/390): + Add Elk to package index +- [#391](https://github.com/fortran-lang/fortran-lang.org/pull/391): + Add pencil-code to package index +- [#392](https://github.com/fortran-lang/fortran-lang.org/pull/392): + Add PROPACK to package index +- [#398](https://github.com/fortran-lang/fortran-lang.org/pull/398): + Add feed link to HTML head element +- [#369](https://github.com/fortran-lang/fortran-lang.org/pull/369): + Resolves Issue #217 +- [#400](https://github.com/fortran-lang/fortran-lang.org/pull/400): + fix dependency of include files under `learn/building_programs` mini-book + +Work in progress: + +- [#397](https://github.com/fortran-lang/fortran-lang.org/pull/397) (WIP): + Add NUFFT to package index +- [#396](https://github.com/fortran-lang/fortran-lang.org/pull/396) (WIP): + Add OpenFFT to package index +- [#395](https://github.com/fortran-lang/fortran-lang.org/pull/395) (WIP): + Add 2DECOMP&FFT to package index +- [#394](https://github.com/fortran-lang/fortran-lang.org/pull/394) (WIP): + Add SLICOT to package index +- [#393](https://github.com/fortran-lang/fortran-lang.org/pull/393) (WIP): + Add FATODE to package index +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#646](https://github.com/fortran-lang/stdlib/pull/646): + Export symbols on Windows and set PIC flag for Unix +- [#651](https://github.com/fortran-lang/stdlib/pull/651): + Bugfix release version 0.2.1 + +Work in progress: + +- [#656](https://github.com/fortran-lang/stdlib/pull/656) (WIP): + Add hint for building error with make +- [#655](https://github.com/fortran-lang/stdlib/pull/655) (WIP): + fixed 32-bit integer overflow in stdlib_io_npy +- [#652](https://github.com/fortran-lang/stdlib/pull/652) (WIP): + Feature: loadtxt skiprows and max_rows +- [#625](https://github.com/fortran-lang/stdlib/pull/625) (WIP): + Gamma special function +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#688](https://github.com/fortran-lang/fpm/pull/688): + Small fix for fpm_model +- [#665](https://github.com/fortran-lang/fpm/pull/665): + add clean command + +Work in progress: + +- [#693](https://github.com/fortran-lang/fpm/pull/693) (WIP): + Fix show-model option +- [#692](https://github.com/fortran-lang/fpm/pull/692) (WIP): + Fix for non-portable GFortran `-J` flag in install script +- [#686](https://github.com/fortran-lang/fpm/pull/686) (WIP): + fix: remove extra space from help-test cmd +- [#685](https://github.com/fortran-lang/fpm/pull/685) (WIP): + fix: function for getting executable path +- [#676](https://github.com/fortran-lang/fpm/pull/676) (WIP): + Tree shaking for modules +- [#671](https://github.com/fortran-lang/fpm/pull/671) (WIP): + Add `library-dir` to support `-Lpath` +- [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): + Enable profiles in toml +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +Recent development updates: + +- FIR + - Lower various intrinsics: + - character related intrinsics, array related intrinsics, index intrinsics, present, exit, btest, ceiling, nearest, scale, matmul, trim, transpose, command, environment, repeat, aint, anint, cmplx, conjg, dble, dprod, sign, spacing, rrspacing, merge intrinsics, lbound, ubound, ior, exp, log, log10, sqrt, atan, sinh, cosh, sin, cos, mvbits, achar + - Add IO lowering test + - Add more lowering tests for dummy arguments + - Add equivalence lowering tests + - Add array constructor lowering tests + - Lower more array expressions + - Lower statement function + - Lower length on character storage + - Lower select case statement + - Add OpenMP Conversion patterns + - Lower procedure designator + - Lower boxed procedure + - Flush and master constructs + - Add lowering C interoperability test + - Add misc lowering tests + - Handle zero extent case in LBOUND + - Lower some coarray statements to their runtime function + - Options to lower math intrinsics to relaxed, precise variants + - Lower optionals in GET_COMMAND_ARGUMENT and GET_ENVIRONMENT_VARIABLE + - Added lowering support for atomic read and write constructs + - fix LBOUND lowering with KIND and no DIM arguments + - Keep fully qualified !fir.heap type for fir.freemem op + - Update the conversion code for fir.coordinate_of + - Set lower bounds of array section fir.embox to one + - Fix fir.embox codegen with constant interior shape + - Do not fold fir.box_addr when it has a slice +- Driver + - Make --version and -version consistent with clang + - Add support for -mmlir + - Make the plugin API independent of the driver internals + - Add support for generating executables +- OpenMP + - Lowering critical construct + - Added assembly format for omp.wsloop and remove parseClauses + - Added lowering support for sections construct + - Added ReductionClauseInterface + - Added parallel sections translation + - Revert "[Flang][openmp] Add semantic check for OpenMP Private, Firstprivate and Lastprivate clauses." + - Added allocate clause translation for OpenMP block constructs + - Support export/import OpenMP Threadprivate Flag + - Add implementation of privatisation + - Add checks and tests for hint clause and fix empty hint +- OpenACC + - Lower enter data directive + - Lower exit data directive + - Lower init/shutdown directive + - Lower update directive + - Lower data directive + - Lower wait directive +- Runtime + - Error recovery improvement in runtime (IOMSG=) + - Initial UTF-8 support in runtime I/O + - Ensure PointerDeallocate actually deallocate pointers + - Add runtime API to catch unit number out of range + - Prefer process time over thread time in CPU_TIME + - Raise FP exceptions from runtime conversion to binary + - Preserve effect of positioning in record in non-advancing output + - Don't skip input spaces when they are significant + - Fix ENDFILE for formatted stream output + - Don't emit empty lines for bad writes + - Ignore leading spaces even in BZ mode + - Fix edge-case FP input bugs + - Enforce some limits on kP scale factors + - Signal record read overrun when PAD='NO' + - Fix KIND=16 real/complex component I/O + - Fix total MAXLOC/MINLOC for non-integer data +- Handle allocatable components when creating array temps +- [Parser] Add a node for individual sections in sections construct +- Add explanatory messages to grammar for language extensions +- Convert RUNTIME_CHECK to better error for user errors in transformational.cpp +- Accept legacy aliases for intrinsic function names +- Expose error recovery cases in external I/O +- Fix crash: ENTRY with generic interface of the same name +- Fold DBLE +- Single construct translation from PFT to FIR +- UBOUND() edge case: empty dimension +- Make not yet implemented messages more consistent +- Fix LBOUND rewrite on descriptor components +- Ensure descriptor lower bounds are LBOUND compliant +- Fix cycle-catcher in procedure characterization +- Fix bogus error from assignment to CLASS(\*) +- Mark C_ASSOCIATED specific procedures as PURE +- Catch bad OPEN(STATUS=) cases +- Fold NEAREST() and its relatives +- Prevent undefined behavior in character MAXLOC folding +- Fix invalid overflow check +- Skip D when including D debug line +- Allow user to recover from bad edit descriptor with INTEGER +- Fold instantiated PDT character component length when needed +- Add one semantic check for allocatable/pointer argument association +- [cmake] Make CMake copy "omp_lib.h" into the build directory +- Handle dynamically optional argument in EXIT +- Fix semantic analysis for "forall" targeted by "label" +- Emit a portability warning for padding in COMMON +- Expand the num_images test coverage +- Fold IBITS() intrinsic function +- Error handling for out-of-range CASE values +- Respect left tab limit with Tn editing after ADVANCE='NO' +- Allow IMPLICIT NONE(EXTERNAL) with GenericDetails +- Do not ICE on out-of-range data statement designator +- Fix ICE for sqrt(0.0) evaluation +- Fix float-number representation bug +- Fix intrinsic interface for DIMAG/DCONJG +- Improve appearance of message attachments +- Fix combining cases of USE association & generic interfaces +- Defer all function result type processing +- Always encode multi-byte output in UTF-8 +- Fix shape analysis of RESHAPE result +- Use full result range for clock_gettime implementation of SYSTEM_CLOCK +- Correct interaction between generics and intrinsics +- Make F0.1 output editing of zero edge case consistent +- Inner INTRINSIC must not shadow host generic +- Local generics must not shadow host-associated generics +- Fix TYPE/CLASS IS (T(...)) in SELECT TYPE +- Allow modification of construct entities +- Defer NAMELIST group item name resolution +- Accept TYPE(intrinsic type) in declarations only for non-extension type +- Finer control over error recovery with GetExpr() +- Handle parameter-dependent types in PDT initializers +- Upgrade short actual character arguments to errors +- Allow POINTER attribute statement on procedure interfaces +- Accept KIND type parameter inquiries on RE, IM, etc. +- Add & use a better visit() +- Fix regression with recent work on intrinsic/generic interactions +- Do not pass derived type by descriptor when not needed +- Fix LBOUND() folding for constant arrays +- Set LBOUND() folding for (x) expression as ones +- Semantics limits on kP scale factors +- Do not ICE on recursive function definition in function result +- Fold transformational bessels when host runtime has bessels +- Do not create arith.extui with same from/to type +- Disambiguate F(X)=Y case where F is a function returning a pointer +- Avoid global name conflict when BIND(C,NAME=) is used +- Accept "INFINITY" as real input +- Add semantic checks for intrinsic function REDUCE() +- Fix crash from PDT component init in module file + +Call notes are recorded and publicly available [here](https://docs.google.com/document/d/1Z2U5UAtJ-Dag5wlMaLaW1KRmNgENNAYynJqLW2j2AZQ/edit). + +### LFortran + +**Compiling `stdlib` with `lfortran`** + +- [Fixes for intrinsics while compiling `stdlib` using `lfortran`](https://gitlab.com/lfortran/lfortran/-/merge_requests/1718) +- [Draft: Stdlib sprint](https://gitlab.com/lfortran/lfortran/-/merge_requests/1719) +- [Draft: Sprint Compiling stdlib with LFortran](https://gitlab.com/lfortran/lfortran/-/merge_requests/1689) + +**Addition of ASR Optimization Passes** + +- [Implementing dead code elemination optimization](https://gitlab.com/lfortran/lfortran/-/merge_requests/1688) +- [Supporting duplication of Function/Subroutine calls](https://gitlab.com/lfortran/lfortran/-/merge_requests/1686) +- [Implementing loop unrolling optimization for fixed sized loops](https://gitlab.com/lfortran/lfortran/-/merge_requests/1681) + +**`libasr`** + +- [AST->ASR: Remove current_body](https://gitlab.com/lfortran/lfortran/-/merge_requests/1720) +- [Added support keyword argument in class procedures](https://gitlab.com/lfortran/lfortran/-/merge_requests/1717) +- [Implementing ArrayBound node to replace `lbound`, `ubound` as function calls](https://gitlab.com/lfortran/lfortran/-/merge_requests/1715) +- [Implementing `Block` and `BlockCall`](https://gitlab.com/lfortran/lfortran/-/merge_requests/1714) +- [Made scope private in SymbolTable struct and added interface methods to modify scope](https://gitlab.com/lfortran/lfortran/-/merge_requests/1711) +- [Removing dead code which treats size intrinsic as function](https://gitlab.com/lfortran/lfortran/-/merge_requests/1710) +- [Implementing `ArraySize` node to replace function call to `size`](https://gitlab.com/lfortran/lfortran/-/merge_requests/1708) +- [Fixing adjustl](https://gitlab.com/lfortran/lfortran/-/merge_requests/1707) +- [Implementing AssociateBlock](https://gitlab.com/lfortran/lfortran/-/merge_requests/1706) +- [Move ASR.asdl into the src/libasr directory](https://gitlab.com/lfortran/lfortran/-/merge_requests/1703) +- [Fixing handling of return type](https://gitlab.com/lfortran/lfortran/-/merge_requests/1699) +- [Fill function in FunctionCall of len expr of Character type after completing symbol table](https://gitlab.com/lfortran/lfortran/-/merge_requests/1698) +- [Fixing inline function calls pass to skip intrinsics](https://gitlab.com/lfortran/lfortran/-/merge_requests/1694) +- [Draft: ASR: Add all intrinsic operations into ASR itself](https://gitlab.com/lfortran/lfortran/-/merge_requests/1700) + +**WASM** + +- [Wasm backend](https://gitlab.com/lfortran/lfortran/-/merge_requests/1713) +- [draft: Wasm Intial Base](https://gitlab.com/lfortran/lfortran/-/merge_requests/1704) +- [draft: Compiling LFortran to WASM](https://gitlab.com/lfortran/lfortran/-/merge_requests/1705) + +**Miscellaneous** + +- [bind(c): Fix call_fortran_i64](https://gitlab.com/lfortran/lfortran/-/merge_requests/1723) +- [bind(c): Add tests for i64, f32, f64](https://gitlab.com/lfortran/lfortran/-/merge_requests/1722) +- [Fix a bug in a test](https://gitlab.com/lfortran/lfortran/-/merge_requests/1721) +- [Add a test for calling Fortran from C](https://gitlab.com/lfortran/lfortran/-/merge_requests/1716) +- [Update ASR from LPython](https://gitlab.com/lfortran/lfortran/-/merge_requests/1712) +- [CI: add git safe.directory](https://gitlab.com/lfortran/lfortran/-/merge_requests/1702) +- [Update ASR from LPython](https://gitlab.com/lfortran/lfortran/-/merge_requests/1701) +- [Update ASR from LPython](https://gitlab.com/lfortran/lfortran/-/merge_requests/1696) +- [Adding and Improving tests](https://gitlab.com/lfortran/lfortran/-/merge_requests/1695) +- [Remove --target install and CMAKE_INSTALL_PREFIX from build1.sh](https://gitlab.com/lfortran/lfortran/-/merge_requests/1709) + +**Contributors** + +- [Gagandeep Singh](https://gitlab.com/czgdp18071) +- [Ondřej Čertík](https://gitlab.com/certik) +- [Ubaid Shaikh](https://gitlab.com/shaikhubaid769) + +We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed. + +## Events + +- We had our 25th Fortran Monthly call on April 22. + You can watch the recording below: + +- Visual Studio Code's popular [Modern Fortran](https://marketplace.visualstudio.com/items?itemName=fortran-lang.linter-gfortran) extension joined the [fortran-lang GitHub](https://github.com/fortran-lang/vscode-fortran-support) organization. + +Join and follow the [Fortran Discourse](https://fortran-lang.discourse.group) +to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/minpack](https://github.com/fortran-lang/minpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/news/2022/06-09-Fortran-Newsletter-June-2022.md.txt b/_sources/news/2022/06-09-Fortran-Newsletter-June-2022.md.txt new file mode 100644 index 000000000000..2f67d8c21f8f --- /dev/null +++ b/_sources/news/2022/06-09-Fortran-Newsletter-June-2022.md.txt @@ -0,0 +1,506 @@ +--- +title: "Fortran newsletter: June 2022" +category: newsletter +date: 2022-06-09 +author: Milan Curcic, Alexis Perry-Holby, Ondřej Čertík, Henil Panchal +... + +# Fortran newsletter: June 2022 + +Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month. + +## fortran-lang.org + +Here's what's new in the fortran-lang.org repo: + +- [#401](https://github.com/fortran-lang/fortran-lang.org/pull/401): + Newsletter May 2022 +- [#403](https://github.com/fortran-lang/fortran-lang.org/pull/403): + Add SeisSol to package index + +Work in progress: + +- [#397](https://github.com/fortran-lang/fortran-lang.org/pull/397) (WIP): + Add NUFFT to package index +- [#396](https://github.com/fortran-lang/fortran-lang.org/pull/396) (WIP): + Add OpenFFT to package index +- [#395](https://github.com/fortran-lang/fortran-lang.org/pull/395) (WIP): + Add 2DECOMP&FFT to package index +- [#394](https://github.com/fortran-lang/fortran-lang.org/pull/394) (WIP): + Add SLICOT to package index +- [#393](https://github.com/fortran-lang/fortran-lang.org/pull/393) (WIP): + Add FATODE to package index +- [#347](https://github.com/fortran-lang/fortran-lang.org/pull/347) (WIP): + Fortran Intrinsics + +[Let us know](https://github.com/fortran-lang/fortran-lang.org/issues) +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +[contributor guide](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/CONTRIBUTING.md) +for how to get started. + +## Fortran Standard Library + +Here's what's new in stdlib: + +- [#656](https://github.com/fortran-lang/stdlib/pull/656): + Add hint for building error with make +- [#655](https://github.com/fortran-lang/stdlib/pull/655): + fixed 32-bit integer overflow in stdlib_io_npy +- [#657](https://github.com/fortran-lang/stdlib/pull/657): + Remove support for manual make builds + +Work in progress: + +- [#660](https://github.com/fortran-lang/stdlib/pull/660) (WIP): + Fix erroneous gaussian quadrature points in gauss_legendre +- [#659](https://github.com/fortran-lang/stdlib/pull/659) (WIP): + Readme update +- [#652](https://github.com/fortran-lang/stdlib/pull/652) (WIP): + Feature: loadtxt skiprows and max_rows +- [#625](https://github.com/fortran-lang/stdlib/pull/625) (WIP): + Gamma special function +- [#611](https://github.com/fortran-lang/stdlib/pull/611) (WIP): + Hash maps +- [#604](https://github.com/fortran-lang/stdlib/pull/604) (WIP): + Add get_argument, get_variable and set_variable +- [#580](https://github.com/fortran-lang/stdlib/pull/580) (WIP): + Add terminal and color escape sequences +- [#552](https://github.com/fortran-lang/stdlib/pull/552) (WIP): + fixed bug in stringlist +- [#536](https://github.com/fortran-lang/stdlib/pull/536) (WIP): + Fix conversion warnings +- [#520](https://github.com/fortran-lang/stdlib/pull/520) (WIP): + [stdlib_io] add `disp`(display variable values formatted). +- [#517](https://github.com/fortran-lang/stdlib/pull/517) (WIP): + adding SPEC_TEMPLATE.md #504 +- [#514](https://github.com/fortran-lang/stdlib/pull/514) (WIP): + pop, drop & get with basic range feature for stringlist +- [#491](https://github.com/fortran-lang/stdlib/pull/491) (WIP): + Stdlib linked list +- [#473](https://github.com/fortran-lang/stdlib/pull/473) (WIP): + Error stop improvements +- [#363](https://github.com/fortran-lang/stdlib/pull/363) (WIP): + Sorting string's characters according to their ASCII values +- [#286](https://github.com/fortran-lang/stdlib/pull/286) (WIP): + Probability Distribution and Statistical Functions -- Beta Distribution Module +- [#278](https://github.com/fortran-lang/stdlib/pull/278) (WIP): + Probability Distribution and Statistical Functions -- Gamma Distribution Module +- [#189](https://github.com/fortran-lang/stdlib/pull/189) (WIP): + Initial implementation of COO / CSR sparse format + +Please help improve stdlib by testing and [reviewing pull requests](https://github.com/fortran-lang/stdlib/issues?q=is%3Apr+is%3Aopen+label%3A%22reviewers+needed%22)! + +The candidate for file system operations to be included in stdlib is being developed by +[@MarDiehl](https://github.com/MarDiehl) and [@arjenmarkus](https://github.com/arjenmarkus) +in [this repository](https://github.com/MarDiehl/stdlib_os). +Please try it out and let us know how it works, if there are any issues, or if the API can be improved. + +## Fortran Package Manager + +Here's what's new in fpm: + +- [#692](https://github.com/fortran-lang/fpm/pull/692): + Fix for non-portable GFortran `-J` flag in install script +- [#693](https://github.com/fortran-lang/fpm/pull/693): + Fix show-model option + +Work in progress: + +- [#701](https://github.com/fortran-lang/fpm/pull/701) (WIP): + Some cleanups and minor fixes +- [#686](https://github.com/fortran-lang/fpm/pull/686) (WIP): + fix: remove extra space from help-test cmd +- [#685](https://github.com/fortran-lang/fpm/pull/685) (WIP): + fix: function for getting executable path +- [#653](https://github.com/fortran-lang/fpm/pull/653) (WIP): + Enable profiles in toml +- [#608](https://github.com/fortran-lang/fpm/pull/608) (WIP): + --env switch lets you specify the prefix of the compiler-related environment variables +- [#539](https://github.com/fortran-lang/fpm/pull/539) (WIP): + Add parent packages into dependency tree +- [#498](https://github.com/fortran-lang/fpm/pull/498) (WIP): + Compiler flags profiles + +`fpm` is still in early development and we need as much help as we can get. +Here's how you can help today: + +- Use it and let us know what you think! Read the [fpm packaging guide](https://fpm.fortran-lang.org/en/tutorial) + to learn how to build your package with fpm, and the [manifest reference](https://fpm.fortran-lang.org/en/spec/manifest.html) + to learn what are all the things that you can specify in the fpm.toml file. + +- Browse existing _fpm_ packages on the [fortran-lang website](https://fortran-lang.org/packages/fpm) +- Browse the [open issues](https://github.com/fortran-lang/fpm/issues) and see if you can help implement any fixes or features. +- Adapt your Fortran package for fpm and submit it to the [Registry](https://github.com/fortran-lang/fpm-registry). +- Improve the documentation. + +The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease. + +## Compilers + +### Flang + +- FIR + - Initial lowering of the Fortran Do loop + - Lower Unstructured do loops +- Driver + - Define the default frontend driver triple + - Add support for consuming LLVM IR/BC files + - Add support for -save-temps + - Switch to the MLIR coding style in the driver + - Fix driver method names overridden by the plugins + - Support parsing response files + - Make driver accept -module-dir + - Add support for generating executables on MacOSX/Darwin +- OpenMP + - Add lowering stubs for OpenMP/OpenACC declarative constructs + - Added tests for taskwait and taskyield translation + - Restrict types for omp.parallel args + - Add omp.cancel and omp.cancellationpoint. + - Initial lowering of the OpenMP worksharing loop + - Lowering for task construct + - Support lowering to MLIR for ordered clause + - Support for Collapse + - Upstream the lowering of the parallel do combined construct + - Fix the types of worksharing-loop variables + - Change the OpenMP atomic read/write test cases +- Runtime + - Correct emission & reading of unterminated final records + - Support B/O/Z editing of CHARACTER + - Use 1-based dim in transformational runtime error msg + - Change "unsupported" messages in the runtime to "not yet implemented" + - Fix input of NAN(...) on non-fast path + - Don't pad CHARACTER input at end of record unless PAD='YES' + - Enforce restrictions on unlimited format repetition + - (G0) for CHARACTER means (A), not (A0) + - BACKSPACE after non-advancing I/O + - Use proper prototypes in Fortran_main. NFCI + - Clean up asynchronous I/O APIs + - INQUIRE(UNIT=666,NUMBER=n) must set n=666 + - Handle BACKSPACE after reading past EOF +- Fix MAXLOC/MINLOC when MASK is scalar .FALSE. +- Fix UBOUND() constant folding for parentheses expr +- Support FINDLOC/MAXLOC/MINLOC with scalar mask +- Handle common block with different sizes in same file +- Add one semantic check for implicit interface +- Fix semantics check for RETURN statement +- Fix ICE for passing a label for non alternate return arguments +- Add ExternalNameConversionPass to pass pipeline +- Fix AllocaOp/AllocMemOp type conversion +- Support external procedure passed as actual argument with implicit character type +- Fix internal error with DATA-statement style initializers +- Upstream support for POINTER assignment in FORALL +- Enforce a program not including more than one main program +- Retain binding label of entry subprograms +- Fold intrinsic inquiry functions SAME_TYPE_AS() and EXTENDS_TYPE_OF() +- Fold intrinsic functions SPACING() and RRSPACING() +- Operands of SIGN() need not have same kind +- Correct folding of SPREAD() for higher ranks +- Refine handling of short character actual arguments +- Ensure that structure constructors fold parameter references +- Correct actual/dummy procedure compatibility for ALLOCATABLE/POINTER functions +- Allow PDTs with LEN parameters in REDUCE() +- Allow NULL() actual argument for optional dummy procedure +- Allow implicit declaration of DATA objects in inner procedures +- Refine error checking in specification expressions +- Reverse a reversed type compatibility check +- Accept POINTER followed by INTERFACE +- Allow ENTRY function result symbol usage before the ENTRY +- Fold real-valued DIM(), MODULO() and MOD() +- Enforce limit on rank + corank +- Allow local variables and function result inquiries in specification expressions +- Change "bad kind" messages in the runtime to "not yet implemented" +- Fold complex component references +- Fix check for assumed-size arguments to SHAPE() & al. +- Fix a performance problem with lowering of forall loops and creating too many temporaries +- Warn for the limit on name length +- Install Fortran_main library +- test conforming & non-conforming lcobound +- Fix use-associated false-positive error +- Fix character length calculation for Unicode component +- Allow global scope names that clash with intrinsic modules +- Ignore BIND(C) binding name conflicts of inner procedures +- Allow more forward references to ENTRY names +- Extension: Accept Hollerith actual arguments as if they were BOZ +- Alternate entry points with unused arguments +- Fix crash in semantics after PDT instantiation + +### LFortran + +- Gagandeep Singh (106): + + - Factored out visit_Declaration to visit_DeclarationUtil in CommonVisitor + - Added test for kwargs in class procedure + - Added support for kwargs in class procedures + - Updated reference tests + - Added support for i32 and i64 in repeat + - Added mergechar in merge interface + - Added is_iostat_eor + - Removed compulsory evaluation of ishft + - Updated reference tests + - Use intrinsic type checking in assignment only when operator overloading fails + - Perform casting in Compare only when overloaded is not available + - Set dest_type and source_type even though casting doesn't happen + - Use kind_value to generate type in ArraySize + - Added test for verifying SemanticError in case of non-constant kind input + - Updated reference tests + - Add AssociateBlock and Block in serialization.cpp + - Include associate_06 in the integration_tests/CMakeLists.txt + - Take into account output kind in LLVM's ArraySize visitor + - Added test for different output kinds in ArraySize + - Updated reference tests + - Import procedures for overloaded operators as well + - Fixed tests for compiling correctly with gfortran + - Mangle name before importing procedures under generic procs + - Merged master into sprint_6 + - Avoid manual imports while using overloaded symbols + - Remove symbol from to_be_imported_later + - Added support for keyword arguments in generic procedures and fix total arguments + - Added test for generic procedures with keyword arguments + - Updated reference tests + - Added intrinsics: congjz, dotproduct and updated: merge + - Added matmul, transpose as ASR nodes + - Added tests for matmul and transpose + - Updated reference tests + - Added merge, dotproduct procedures for complex type + - Updated reference tests + - Add support for source kwarg in allocate + - Updated test for verifying source argument + - Updated reference tests + - Registered shiftr, shiftl, adjustr, lgt, llt, lge, lle, count in comptime_eval.h + - Added shiftl, shiftr and count + - Added more implementations for abs, mod + - Added adjustr, lgt, llt, lle, lge for string type + - Updated reference tests + - Registered ieee_is_nan in comptime_eval.h + - Added support for pack intrinsic + - Added support for transfer intrinsic + - Use modern Fortran syntax for array constants + - Updated reference tests + - ArrayTransfer -> Transfer rename + - Added generation code for expression replacer + - Added ReplaceArgVisitor and generalised handle_return_type + - Added tests for verifying arg replacer in return types + - Updated reference tests + - Added cmplx via ComplexConstructor node + - Updated reference tests + - Import via use inside Function + - Added support for matching Derived/ClassType + - Added support for falling back to intrinsic + - Added to test verify importing procedures inside function + - Updated reference tests + - Added support for passing kind parameter to floor intrinsic + - 1. Use CPtr for variables declared with type(c_ptr) 2. Set Module_t.m_intrinsic in set_intrinsic 3. Add CPtr in extract_dimensions_from_ttype + - Updated reference tests + - Added LLVM support for CLoc, CPtr + - Updated reference tests + - Added integration test for c_f_pointer + - Added support for c_f_pointer + - Updated reference tests + - Added error checking for presence of shape argument in c_f_pointer call + - Fixed ArrayConstant type and raise error is shape is not rank 1 + - Updated reference tests + - Implemented c_f_pointer for non-array variables + - Updated reference tests + - Added test with pointer array variables + - Shifted type generation to a function in LLVM backend + - Corrected llvm::Type\* for array pointer variables + - Updated reference tests + - 1. Fixed ArrayBound for array pointers 2. Shifted argument type generation to a function and use recursion for Pointer + - Added support for printing Pointer type + - 1. Added AssociateBlock symbol in PassVisitor 2. Fixed get_bound to return ArrayBound instead of a function call + - Use element type in ArrayRef instead of pointer + - Syntax improvement + - Updated reference tests + - Removed warnings + - Adjust ArrayBound for ArrayConstant + - Corrected arrays_13 by making iv, rv as target + - Stronger verification checks for CFPointer creation + - Support for array inputs in CFPointer + - Improved bindc2 for array inputs in c_f_pointer + - 1. Fixed ArraySize for array pointer variables in LLVM backend. 2. Improved CFPointer in LLVM backend to not interfere with already stored array in array pointer variables 3. Improved bindc2.f90 and made it robust to cover more cases. 4. Updated reference tests + - Fixed unused variable warnings in llvm_utils.cpp + - Use abstract methods in CFPointer for accessing array descriptor data + - Added test for ArrayRef in c_loc + - Minor update in bindc2 and bindc3 + - Fixed Complex case in duplicate type and intialise type at declaration + - Added support ArrayRef in CLoc in LLVM backend + - Updated reference tests + - 1. Added support for CPtr in arguments and fixed llvm::Type for intent(out) for CPtr 2. Added support for constant arrays as shape in c_f_pointer + - Updated bindc4 for verifying constant arrays in c_f_pointer + - Updated reference tests + +- Naman Gera (1): + + - Update the C runtime library + +- Ondřej Čertík (136): + + - AST->ASR: Remove current_body + - Fix a bug in a test + - Update tests + - bind(c): Add tests for i64, f32, f64 + - Update modules_18b.f90 to compile + - Add tests for the other types + - Comment out a non-working case + - Update tests + - bind(c): Fix call_fortran_i64 + - Update tests + - bind(c): Add a test for i32 by value + - LLVM: implement value arguments in bind(c) procs + - Update tests + - Make modules_18b.f90 compile + - bind(c): test i64, f32, f64 by value + - Update modules_18b to compile + - Update tests + - ASR: Bring updates from LPython + - Update tests + - ASR: Updates from LPython + - Update the rest of the code to compile + - Update tests + - C++ backend: implement ComplexConstructor + - Add the simplest test for submodules + - Add Logical to nested_vars + - Workaround a cmake bug + - Add a test for bind(c) with pointers + - Rework the AST->ASR handling of floor() + - Implement is_intrinsic_symbol() + - Refactor floor() into lfortran_intrinsic_math3 + - Update tests + - Add a test case for imported derived type + - Add value to all expr nodes except Constant + - Update tests + - Implement expr_type() using ExprTypeVisitor + - Implement expr_value() using ExprValueVisitor + - iso_c_binding: add the c_loc() function + - Allow derived types as return values + - ASR: Represent c_loc() + - Add ASR test for c_loc() + - Update tests + - ASR: Add string conversion for derived type + - Add a CPtr() type + - Make c_loc() return CPtr + - LLVM: handle CPtr in convert_args() + - LLVM: Comment out visit_CFPointer (WIP) + - CI: pin mkdocs-material and mkdocs versions + - Fix spelling + - Update tests + - Shorten the help for --show-wat to fit 80 columns + - Git ignore wasm_visitor.h + - Move emit_wat out of LLVM ifdef + - Generate wasm_visitor.h in ci/build.xsh + - Enable WAT tests in run_tests.py + - Add a test for WASM + - Update reference tests + - Implement FortranEvaluator::get_wasm() + - Use asr_to_wasm_bytes_stream() in asr_to_wasm + - WASM: Add 64 bit BinOp operations + - WASM: handle i64 arguments + - WASM: Add a test for i64 + - Move the wasm_instructions_visitor.py to libasr + - Update ASR from LPython + - Update tests + - Bring more ASR improvements from LPython + - Bring in name mangling + - Update tests + - Add a test for passing through pointers via C + - LLVM: implement debug ASR printing + - LLVM: Use `deftype` to implement interfaces + - LLVM: Pass type(c_ptr) by value properly + - Pass "n" by reference for now + - Pass arguments by value for bind(c) + - Only do the load if it is a pointer + - LLVM: Use an ASR condition instead of LLVM one + - lfortran_intrinsic_string: depend iso_fortran_env + - Enable bindc_01 LLVM test + - Add a test for pointer argument + - Add suffixes 1/2 + - Add a callback2b test + - Add a test for callback1b() + - Get value to reference argument working + - Port ASR improvements from LPython + - Update the rest of the code to compile + - Update tests + - ASR sync with LPython + +- Tapasweni Pathak (9): + + - Add markdown sample for intrinsic:math:asin + - Add doxygen docstring in lfortran intrinsic runtime asin + - Add comments for interface asin + - Add doxygen comment for lfortran_sasin_api + - Enhance presentation of information + - use retval for return values variable + - delete fortran doxygen comments docs + - mkdocs: LFortran Intrinsics: asin + - add: mkdocs: code syntax highlighting + +- Ubaid (24): + - Improve ceiling() test case + - Update reference tests + - Specifying constants as double precision + - Update error condition check as suggested + - Update reference tests + - Code formatting + - Add and improve namespace ending comments + - Add wasm_instructions list + - Comment out few instructions that have temporary variables + - Add wasm_instructions_visitor script + - Add namespace related info and pass code as function parameter in wasm_insts_visitor script + - Add command in build0.sh to generate wasm_visitor.h + - Add utility struct and functions defined in wasm_utils + - Add wasm_to_wat converter + - Include wasm_to_wat and wasm_utils in CMakeLists.txt + - Define vector.resize() + - Add --show-wat flag and emit_wat() function + - Declare and define get_wat() in fortran_evaluator + - Declare and define asr_to_wasm_bytes_stream() which stores wasm binary to memory + - Fix warning by adding U and add comment + - Fix missing parameters bug + - Switch off WAT_DEBUG macro + - Remove debugging cout statements + - Move load_file() to top + +We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed. + +## Events + +- The Fortran-lang Google Summer of Code 2022 program began on May 23. + We welcome five contributors: Arteev Raina, Ashirwad Mishra, + Henil Shalin Panchal, Mohd Ubaid Shaikh, and Oshanath Rajawasam. + They will be working on exciting projects from fpm and the Fortran + website to improving the LFortran compiler. + Read more about their projects [here](https://summerofcode.withgoogle.com/programs/2022/organizations/fortran-lang). +- We had our 26th Fortran Monthly call on May 16. + Watch the recording below: + + +Join and follow the [Fortran Discourse](https://fortran-lang.discourse.group) +to stay tuned with the future meetings. + +## Contributors + +We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories: + +- [fortran-lang/stdlib](https://github.com/fortran-lang/stdlib) +- [fortran-lang/stdlib-cmake-example](https://github.com/fortran-lang/stdlib-cmake-example) +- [fortran-lang/fpm](https://github.com/fortran-lang/fpm) +- [fortran-lang/fpm-registry](https://github.com/fortran-lang/fpm-registry) +- [fortran-lang/fpm-docs](https://github.com/fortran-lang/fpm-docs) +- [fortran-lang/setup-fpm](https://github.com/fortran-lang/setup-fpm) +- [fortran-lang/fpm-haskell](https://github.com/fortran-lang/fpm-haskell) +- [fortran-lang/fortran-lang.org](https://github.com/fortran-lang/fortran-lang.org) +- [fortran-lang/benchmarks](https://github.com/fortran-lang/benchmarks) +- [fortran-lang/fortran-forum-article-template](https://github.com/fortran-lang/fortran-forum-article-template) +- [fortran-lang/fftpack](https://github.com/fortran-lang/fftpack) +- [fortran-lang/minpack](https://github.com/fortran-lang/minpack) +- [fortran-lang/test-drive](https://github.com/fortran-lang/test-drive) +- [fortran-lang/vscode-fortran-support](https://github.com/fortran-lang/vscode-fortran-support) +- [j3-fortran/fortran_proposals](https://github.com/j3-fortran/fortran_proposals) + +
diff --git a/_sources/packages.md.txt b/_sources/packages.md.txt new file mode 100644 index 000000000000..8cb21263566b --- /dev/null +++ b/_sources/packages.md.txt @@ -0,0 +1,111 @@ +--- +sd_hide_title: true +--- + +# Packages + +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Fortran Packages +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +Find a Package +::: + + + +:::::{grid} 2 + +::::{grid-item-card} +:shadow: none + +:::{div} sd-fs-3 +Package index +::: + +:::{div} sd-fs-6 +The fortran-lang package index is community-maintained and lists open source Fortran-related projects.This includes large-scale scientific applications,function libraries, Fortran interfaces, and developer tools.
+See [here](../community/packages/) for how to get your project listed.
+Use the box above to search the package index by keyword, package name, or author username. +::: + +:::: + +::::{grid-item-card} +:shadow: none + +:::{div} sd-fs-3 +Featured topics +::: + +:::{jinja} fortran_index +{% for j in tags %} +{{j}},{% endfor %} +::: + +:::: +::::: + +:::{div} sd-fs-3 sd-font-weight-bold sd-text-primary +Browse Packages by Category +::: + +## [Data types and containers](../packages/data-types) + +Libraries for advanced data types and container classes + +## [Interface libraries](../packages/interfaces) + +Libraries that interface with other systems, languages, or devices + +## [Libraries](../packages/libraries) + +Fortran libraries for general programming tasks + +## [Input, output and parsing](../packages/io) + +Libraries for reading, writing and parsing files and inputs + +## [Graphics, plotting and user interfaces](../packages/graphics) + +Libraries for plotting data, handling images and generating user interfaces + +## [Examples and templates](../packages/examples) + +Demonstration codes and templates for Fortran + +## [Numerical projects](../packages/numerical) + +Fortran libraries for linear algebra, optimization, root-finding etc. + +## [Programming utilities](../packages/programming) + +Error handling, logging, documentation and testing + +## [Characters and strings](../packages/strings) + +Libraries for manipulating characters and strings + +## [Scientific Codes](../packages/scientific) + +Applications and libraries for applied mathematical and scientific problems + +See [package index guidelines](../community/packages) for how to get your project listed. + +:::{toctree} +:hidden: +packages/data-types +packages/interfaces +packages/libraries +packages/io +packages/graphics +packages/examples +packages/numerical +packages/programming +packages/strings +packages/scientific +::: diff --git a/_sources/packages/data-types.md.txt b/_sources/packages/data-types.md.txt new file mode 100644 index 000000000000..5dfc2ccb3fa8 --- /dev/null +++ b/_sources/packages/data-types.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Libraries for advanced data types and container classes + +:::::{jinja} fortran_index + +{% for j in data_types|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/examples.md.txt b/_sources/packages/examples.md.txt new file mode 100644 index 000000000000..ff61f7659676 --- /dev/null +++ b/_sources/packages/examples.md.txt @@ -0,0 +1,66 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Demonstration codes and templates for Fortran + + +:::::{jinja} fortran_index + +{% for j in examples|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/graphics.md.txt b/_sources/packages/graphics.md.txt new file mode 100644 index 000000000000..aad8fa7c1a36 --- /dev/null +++ b/_sources/packages/graphics.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Libraries for plotting data, handling images and generating user interfaces + +:::::{jinja} fortran_index + +{% for j in graphics|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/interfaces.md.txt b/_sources/packages/interfaces.md.txt new file mode 100644 index 000000000000..f6820f8109c9 --- /dev/null +++ b/_sources/packages/interfaces.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Libraries that interface with other systems, languages, or devices + +:::::{jinja} fortran_index + +{% for j in interfaces|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/io.md.txt b/_sources/packages/io.md.txt new file mode 100644 index 000000000000..2a015da9f59a --- /dev/null +++ b/_sources/packages/io.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Libraries for reading, writing and parsing files and inputs + +:::::{jinja} fortran_index + +{% for j in io|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/libraries.md.txt b/_sources/packages/libraries.md.txt new file mode 100644 index 000000000000..e746257ca1bd --- /dev/null +++ b/_sources/packages/libraries.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Fortran libraries for general programming tasks + +:::::{jinja} fortran_index + +{% for j in libraries|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/numerical.md.txt b/_sources/packages/numerical.md.txt new file mode 100644 index 000000000000..b12a66098e68 --- /dev/null +++ b/_sources/packages/numerical.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Fortran libraries for linear algebra, optimization, root-finding etc. + +:::::{jinja} fortran_index + +{% for j in numerical|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/programming.md.txt b/_sources/packages/programming.md.txt new file mode 100644 index 000000000000..6d23aed1a166 --- /dev/null +++ b/_sources/packages/programming.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Error handling, logging, documentation and testing + +:::::{jinja} fortran_index + +{% for j in programming|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/scientific.md.txt b/_sources/packages/scientific.md.txt new file mode 100644 index 000000000000..db4779d8aff6 --- /dev/null +++ b/_sources/packages/scientific.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Applications and libraries for applied mathematical and scientific problems + +:::::{jinja} fortran_index + +{% for j in scientific|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/packages/strings.md.txt b/_sources/packages/strings.md.txt new file mode 100644 index 000000000000..526c37d6d8da --- /dev/null +++ b/_sources/packages/strings.md.txt @@ -0,0 +1,65 @@ +:::{div} sd-text-center sd-fs-2 sd-font-weight-bold sd-text-primary +Featured Open Source Projects +::: + +:::{div} sd-text-center sd-fs-3 +A rich ecosystem of high-performance code +::: + +## Libraries for manipulating characters and strings + +:::::{jinja} fortran_index + +{% for j in strings|sort(attribute='name') %} +:::{div} sd-fs-5 +{% if j.github is defined %} + +## {fab}`github;1em` [{{j.name}}]({{"https://github.com/"+j.github}}) +Release +license +stars +forks +last-commit +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% elif j.gitlab is defined%} + +## {fab}`gitlab;1em` [{{j.name}}]({{"https://gitlab.com/"+j.gitlab}}) + +Release +license +forks +issues +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} +{% else %} + +## {fab}`git-alt;1em` [{{j.name}}]({{j.url}}) + +{% if j.description is defined %} +{{j.description}} +{% endif %} +{% if j.tags is defined and j.tags != None %} +Tags: {% for tag in j.tags.split() %} {bdg-light}`{{ tag }}` {% endfor %} + +{% endif %} + +{% endif %} +::: +{% endfor %} + +::::: + +See [package index guidelines](../community/packages) for how to get your project listed. diff --git a/_sources/roadmap.md.txt b/_sources/roadmap.md.txt new file mode 100644 index 000000000000..0fe9a4b7ebe2 --- /dev/null +++ b/_sources/roadmap.md.txt @@ -0,0 +1,197 @@ +# Roadmap + +This is a snapshot of the Fortran-Lang roadmap, which is a living document. +It is intended to give a general idea of the direction of the Organization, encourage developers to contribute to our projects and seek funding opportunities. +It is not intended to be a commitment to deliver specific features or to prevent Fortran-Lang from doing other things. +The roadmap is a living document, and it will be updated as needed. + +## [Fortran Standard Library](https://github.com/fortran-lang/stdlib) + +### OS integration: File system + +Currently, file system operations such as listing contents of directories, traversing directories, and similar, +are restricted to 3rd party libraries and compiler extensions that are platform-specific and not portable. +This project will entail designing and implementing a cross-platform solution for file system operations. + +**Related issues:** + +- [stdlib#201](https://github.com/fortran-lang/stdlib/issues/201): File system operations +- [stdlib#220](https://github.com/fortran-lang/stdlib/issues/220): API for file system operations, directory manipulation + +**WIP implementation:** + +- [stdlib_os](https://github.com/MarDiehl/stdlib_os) + +**Expected outcomes:** Implemented an stdlib module that provides cross-platform file-system utilities + +### OS integration: Subprocesses + +Cross-platform solution to abstract POSIX and Windows API for creating subprocesses. + +**Related issues:** + +- [stdlib#22](https://github.com/fortran-lang/stdlib/issues/22): Interface to POSIX I/O API +- [stdlib#308](https://github.com/fortran-lang/stdlib/issues/308): Subprocesses and Multiprocessing + +**Discourse thread:** + +- [Ideas for command module](https://fortran-lang.discourse.group/t/ideas-for-command-module/439) + +### Sparse matrices + +Implementing a standardized API for procedures to handle (COO and CSR) sparse matrices. +Both non-OO low-level API and OO API should be implemented. + +**Related issue**: + +- [#38](https://github.com/fortran-lang/stdlib/issues/38) + +**WIP implementation**: + +- [#189](https://github.com/fortran-lang/stdlib/pull/189) + +**Expected outcomes:** Implemented sparse matrix functionality in the `stdlib_linalg` module + +## [Fortran Package Manager (fpm)](https://github.com/fortran-lang/fpm) + +### Fortran Registry + +Fpm currently supports decentralized package dependencies whereby dependencies are specified without a central registry. +A long-term goal for Fortran-Lang is to host a community-supported registry of fpm packages and for fpm to support interfacing with this and other registries to simplify dependency management. + +This project idea aims to accomplish a major step towards a central package registry by implementing support in fpm for a locally hosted package registry. +In particular, this project will entail: + +- Defining the manifest syntax to use dependencies from a registry +- Implementing support for looking up and loading a (local) registry +- Allowing fpm to manage a local registry by fetching it from a remote registry + +**Related issues:** + +- [fpm#321](https://github.com/fortran-lang/fpm/issues/321): Implement support for a local registry +- [fpm#35](https://github.com/fortran-lang/fpm/issues/35): Full package registry + +**See also:** + +- [fpm-registry](https://github.com/fortran-lang/fpm-registry): Prototype central registry +- [fpm-search](https://github.com/urbanjost/fpm-search): fpm app for searching the registry for fpm packages + +**Expected outcomes:** Implemented a repository of fpm packages as a service + +### Version Constraint Resolution + +The current decentralized package system in fpm allows dependencies to be fetched via a git repository URL. As part of this, a git tag or commit can be given to require a specific version of a dependency. There is however no way of specifying version compatibility requirements (_e.g._ `>= 1.0.0, <2.0.0`) and no way to resolve such requirements across a dependency tree. + +This project will involve: + +- Defining a manifest syntax for version compatibility matching +- Implementing support in fpm for solving a set of version compatibility constraints + +A possible approach would be to interface with an existing satisfiability solver such as: + +- [libsolv](https://github.com/openSUSE/libsolv): + interface via `iso_c_binding` as a separate fpm package + +**See also:** existing options for version matching syntax: + +- [conda](https://docs.conda.io/projects/conda-build/en/latest/resources/package-spec.html#package-match-specifications) +- [npm](https://docs.npmjs.com/about-semantic-versioning/) +- [cargo](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html) + +**Expected outcomes:** Implemented a working version constraint mechanism in fpm + +### fpm-ize the Fortran ecosystem + +Research the Fortran library and application ecosystem (on GitHub and beyond) +and collaborate with package maintainers on making their package fpm-compatible. + +**Expected outcomes:** Bring popular Fortran, C and C++ packages to the fpm ecosystem. + +### Extended Testing Support + +The aim of this project is to create a manifest specification to provide defaults to executable targets in fpm projects. +Information can be passed as environment variables, command-line arguments or as a runner. +Desired features include: + +- Programs should have a way to find resources of which the relative position within the project source directory is known. +- The current binary directory to access other targets within a project. +- Default runners like `mpirun`/`cafrun` or scripts from test frameworks should be usable to launch programs. +- A general syntax to define environment variables and command-line arguments should be defined. + +Some features should be implemented directly in fpm, while more elaborated functionality could be implemented in a separate fpm package as an official Fortran-lang fpm package. + +**Related issues:** + +- [fpm#179](https://github.com/fortran-lang/fpm/issues/179): Testing with fpm test + +**Related discussions:** + +- [fpm#328](https://github.com/fortran-lang/fpm/discussions/328): Example which requires external data + +**Expected outcomes:** fpm has broader and deeper testing functionality + +### Source Code Distribution with Foreign Build Systems + +The aim of this project is to enable fpm to create source code distributions of itself that can be bootstrapped without fpm. +Desired features include: + +- Allow fpm to generate source code distributions with non-fpm build systems. +- Generated source code distribution should allow building fpm project without fpm, git or internet access. +- Potential third-party build systems are CMake and Meson. +- Allow easier distribution and packaging of fpm via various packaging ecosystems. + +**Related issues:** + +- [fpm#69](https://github.com/fortran-lang/fpm/issues/69): Have CMake and Make backends +- [fpm#70](https://github.com/fortran-lang/fpm/issues/70): Have a Conda backend + +**Expected outcomes:** fpm can generate source code distributions of packages that can be build using CMake and/or Meson. + +## [Modern Fortran for Visual Studio Code](https://github.com/fortran-lang/vscode-fortran-support) + +### Integration with the Fortran Package Manager and CMake + +The aim of this project is to integrate the Fortran Package Manager and CMake into the Modern Fortran Visual Studio Code extension. The integration should allow for building of a project with fpm or CMake through VS Code but also the +accurate configuration of the linter and the Language Server. + +**Related issues:** + +- [vscode-fortran-support#471](https://github.com/fortran-lang/vscode-fortran-support/issues/471): Add support for fpm +- [vscode-fortran-support#133](https://github.com/fortran-lang/vscode-fortran-support/issues/133): Linter setup via CMake +- [fpm#705](https://github.com/fortran-lang/fpm/issues/705): FPM pip installation + +**Related discussions:** + +- [fpm#768](https://github.com/fortran-lang/fpm/discussions/768): FPM integration discussion + +**Expected outcomes:** + +- fpm and CMake are integrated into the Modern Fortran Visual Studio Code extension. +- User is able to build, run and debug fpm project. +- The Modern Fortran extension is able to automatically configure the linter and the Language Server based on the fpm and CMake configurations. +- Easy installation of fpm via pip. + +### Sphinx Documentation + +The aim of the project is to write the documentation webpage for Modern Fortran +using Sphinx and MyST Markdown. The documentation should include: + +- Installation instructions +- Available settings and how to set them +- Frequently Asked Questions and their answers + +**Expected outcomes:** Modern Fortran for Visual Studio Code extension has a documentation webpage. + +**Related issues:** + +- [vscode-fortran-support#472](https://github.com/fortran-lang/vscode-fortran-support/issues/472): Add Walkthroughs + +### Extension Localizations + +The aim of the project is to localize the Modern Fortran for Visual Studio Code extension into other languages. There is already extensive documentation on how to localize Visual Studio Code extensions, and we already have tools in place to help with the process, see for example [fortran-lang.org](https://fortran-lang.org/en/). + +**Related issues:** + +- [vscode-fortran-support#616](https://github.com/fortran-lang/vscode-fortran-support/issues/616): Add localization support + +**Expected outcomes:** Modern Fortran for Visual Studio Code extension is localized into other languages. diff --git a/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css new file mode 100644 index 000000000000..3225661c25af --- /dev/null +++ b/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #007bff;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0069d9;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 000000000000..36b38cf0d911 --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 000000000000..8549469dc29f --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000000..18495ea08848 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,900 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 000000000000..92fad4b5c0b7 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 000000000000..54b3c4638111 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 000000000000..f1916ec7d1bb --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 000000000000..02c5c82d9d5e --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copié dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos, .gp'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 000000000000..dbe1aaad79cd --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/custom.css b/_static/custom.css new file mode 100644 index 000000000000..31670ffb5339 --- /dev/null +++ b/_static/custom.css @@ -0,0 +1,88 @@ +:root { + --sd-color-primary: #734f96; + --sd-color-secondary: #6c757d; + --sd-color-success: #28a745; + --sd-color-info: #17a2b8; + --sd-color-warning: #f0b37e; + --sd-color-danger: #dc3545; + --sd-color-light: #f8f9fa; + --sd-color-muted: #6c757d; + --sd-color-dark: #ffffff; + --sd-color-primary-highlight: #0069d9; + --sd-color-secondary-highlight: #5c636a; + --sd-color-success-highlight: #228e3b; + --sd-color-info-highlight: #148a9c; + --sd-color-warning-highlight: #cc986b; + --sd-color-danger-highlight: #bb2d3b; + --sd-color-light-highlight: #d3d4d5; + --sd-color-muted-highlight: #5c636a; + --sd-color-dark-highlight: #1c1f23; + --sd-color-primary-text: #fff; + --sd-color-secondary-text: #fff; + --sd-color-success-text: #fff; + --sd-color-info-text: #fff; + --sd-color-warning-text: #212529; + --sd-color-danger-text: #fff; + --sd-color-light-text: #212529; + --sd-color-muted-text: #fff; + --sd-color-dark-text: #fff; + --sd-color-shadow: rgba(0, 0, 0, 0.15); + --sd-color-card-border: rgba(0, 0, 0, 0.125); + --sd-color-card-border-hover: hsla(231, 99%, 66%, 1); + --sd-color-card-background: transparent; + --sd-color-card-text: inherit; + --sd-color-card-header: transparent; + --sd-color-card-footer: transparent; + --sd-color-tabs-label-active: hsla(231, 99%, 66%, 1); + --sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1); + --sd-color-tabs-label-inactive: hsl(0, 0%, 66%); + --sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1); + --sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62); + --sd-color-tabs-underline-inactive: transparent; + --sd-color-tabs-overline: rgb(222, 222, 222); + --sd-color-tabs-underline: rgb(222, 222, 222); + --sd-fontsize-tabs-label: 1rem; +} + +.index_joinus_mobile { + visibility: hidden; + display: none; +} + +h1 { + color: #734f96; +} +@media screen and (max-width: 720px) { + .index_joinus { + visibility: hidden; + clear: both; + float: left; + margin: 10px auto 5px 20px; + width: 28%; + display: none; + } + .index_joinus_mobile { + visibility: visible; + display: inline; + } +} + +i.fa-twitter:before { + color: #734f96; +} + +i.fa-discourse:before { + color: #734f96; +} + +i.fa-github:before { + color: #734f96; +} + +i.fa-rss:before { + color: #734f96; +} + +i.fa-envelope-open-text:before { + color: #734f96; +} \ No newline at end of file diff --git a/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css new file mode 100644 index 000000000000..3225661c25af --- /dev/null +++ b/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #007bff;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0069d9;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 000000000000..36b38cf0d911 --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000000..527b876ca636 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000000..77a1eb2acfc2 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '1.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'dirhtml', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 000000000000..a858a410e4fa Binary files /dev/null and b/_static/file.png differ diff --git a/_static/fortran-logo-256x256.png b/_static/fortran-logo-256x256.png new file mode 100644 index 000000000000..85637cef721f Binary files /dev/null and b/_static/fortran-logo-256x256.png differ diff --git a/_static/images/favicon.ico b/_static/images/favicon.ico new file mode 100644 index 000000000000..9a7367f2ac98 Binary files /dev/null and b/_static/images/favicon.ico differ diff --git a/_static/images/fortran-logo-256x256.png b/_static/images/fortran-logo-256x256.png new file mode 100644 index 000000000000..85637cef721f Binary files /dev/null and b/_static/images/fortran-logo-256x256.png differ diff --git a/_static/jquery-3.6.0.js b/_static/jquery-3.6.0.js new file mode 100644 index 000000000000..fc6c299b73e7 --- /dev/null +++ b/_static/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +{% endmacro %} \ No newline at end of file diff --git a/bn/.doctrees/environment.pickle b/bn/.doctrees/environment.pickle index 286f0096b324..cc9dcbe0ee16 100644 Binary files a/bn/.doctrees/environment.pickle and b/bn/.doctrees/environment.pickle differ diff --git a/bn/community/contributing/index.html b/bn/community/contributing/index.html index 64dbcc37ff4b..170c55684831 100644 --- a/bn/community/contributing/index.html +++ b/bn/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/community/history/index.html b/bn/community/history/index.html index 362792ecf2f9..3c96af1ca2ef 100644 --- a/bn/community/history/index.html +++ b/bn/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/community/index.html b/bn/community/index.html index e8dbf665833b..e7a5dff163bc 100644 --- a/bn/community/index.html +++ b/bn/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/community/minibooks/index.html b/bn/community/minibooks/index.html index cb99e486bd8b..cb5370534cd0 100644 --- a/bn/community/minibooks/index.html +++ b/bn/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/community/packages/index.html b/bn/community/packages/index.html index 11c1d4573ece..be726959ebbc 100644 --- a/bn/community/packages/index.html +++ b/bn/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/compilers/index.html b/bn/compilers/index.html index 0b3a43be74b4..8b934a453488 100644 --- a/bn/compilers/index.html +++ b/bn/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/genindex/index.html b/bn/genindex/index.html index 169d83cca932..144fee228b8a 100644 --- a/bn/genindex/index.html +++ b/bn/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/index.html b/bn/index.html index e7f60ed8bfee..8bb03824f2ed 100644 --- a/bn/index.html +++ b/bn/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/allocatable_arrays/index.html b/bn/learn/best_practices/allocatable_arrays/index.html index a8c493bd4b27..4680198a0542 100644 --- a/bn/learn/best_practices/allocatable_arrays/index.html +++ b/bn/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/arrays/index.html b/bn/learn/best_practices/arrays/index.html index 8225a06f2257..87608300ef8e 100644 --- a/bn/learn/best_practices/arrays/index.html +++ b/bn/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/callbacks/index.html b/bn/learn/best_practices/callbacks/index.html index 2fdab8c93e48..5a8fb6639c42 100644 --- a/bn/learn/best_practices/callbacks/index.html +++ b/bn/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/element_operations/index.html b/bn/learn/best_practices/element_operations/index.html index 889b4d1ec9d6..d2f2630bde24 100644 --- a/bn/learn/best_practices/element_operations/index.html +++ b/bn/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/file_io/index.html b/bn/learn/best_practices/file_io/index.html index 6acfa954cffa..ceb897eac044 100644 --- a/bn/learn/best_practices/file_io/index.html +++ b/bn/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/floating_point/index.html b/bn/learn/best_practices/floating_point/index.html index 4b7171294db3..7548cc1fe0c7 100644 --- a/bn/learn/best_practices/floating_point/index.html +++ b/bn/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/index.html b/bn/learn/best_practices/index.html index f96ab80fd52a..9eb11cf788d2 100644 --- a/bn/learn/best_practices/index.html +++ b/bn/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/integer_division/index.html b/bn/learn/best_practices/integer_division/index.html index a7b6c7020daf..bd7b2ad977f9 100644 --- a/bn/learn/best_practices/integer_division/index.html +++ b/bn/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/modules_programs/index.html b/bn/learn/best_practices/modules_programs/index.html index c2b502b0b011..5369bb1550c2 100644 --- a/bn/learn/best_practices/modules_programs/index.html +++ b/bn/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/multidim_arrays/index.html b/bn/learn/best_practices/multidim_arrays/index.html index 1694ec8d1fb3..18391430d360 100644 --- a/bn/learn/best_practices/multidim_arrays/index.html +++ b/bn/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/style_guide/index.html b/bn/learn/best_practices/style_guide/index.html index bf52de66e276..025b7890ae2d 100644 --- a/bn/learn/best_practices/style_guide/index.html +++ b/bn/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/best_practices/type_casting/index.html b/bn/learn/best_practices/type_casting/index.html index 76712b4af4b4..4adf38f0fe88 100644 --- a/bn/learn/best_practices/type_casting/index.html +++ b/bn/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/build_tools/index.html b/bn/learn/building_programs/build_tools/index.html index af048f1dc7dc..6a5bc3ae2773 100644 --- a/bn/learn/building_programs/build_tools/index.html +++ b/bn/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/compiling_source/index.html b/bn/learn/building_programs/compiling_source/index.html index a51ad409158b..7905140159cc 100644 --- a/bn/learn/building_programs/compiling_source/index.html +++ b/bn/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/distributing/index.html b/bn/learn/building_programs/distributing/index.html index 1c2692357180..184537511707 100644 --- a/bn/learn/building_programs/distributing/index.html +++ b/bn/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/include_files/index.html b/bn/learn/building_programs/include_files/index.html index 02f1010ab43c..45cc226a753d 100644 --- a/bn/learn/building_programs/include_files/index.html +++ b/bn/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/index.html b/bn/learn/building_programs/index.html index 52c963b3685c..4517b6fd84e2 100644 --- a/bn/learn/building_programs/index.html +++ b/bn/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/linking_pieces/index.html b/bn/learn/building_programs/linking_pieces/index.html index 56e610849d01..7900097b1642 100644 --- a/bn/learn/building_programs/linking_pieces/index.html +++ b/bn/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/managing_libraries/index.html b/bn/learn/building_programs/managing_libraries/index.html index 21e6eae8fc14..5dbb3b3d408d 100644 --- a/bn/learn/building_programs/managing_libraries/index.html +++ b/bn/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/project_make/index.html b/bn/learn/building_programs/project_make/index.html index 86c1eac144b2..d0785c0e4e7b 100644 --- a/bn/learn/building_programs/project_make/index.html +++ b/bn/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/building_programs/runtime_libraries/index.html b/bn/learn/building_programs/runtime_libraries/index.html index 2e71859c38e0..c2baf55191ee 100644 --- a/bn/learn/building_programs/runtime_libraries/index.html +++ b/bn/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/index.html b/bn/learn/index.html index a5809347db61..faf58dd41533 100644 --- a/bn/learn/index.html +++ b/bn/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/array/index.html b/bn/learn/intrinsics/array/index.html index c988f41addec..dc90e6014638 100644 --- a/bn/learn/intrinsics/array/index.html +++ b/bn/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/bit/index.html b/bn/learn/intrinsics/bit/index.html index 175338b7cf1d..dd7808b6534d 100644 --- a/bn/learn/intrinsics/bit/index.html +++ b/bn/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/cfi/index.html b/bn/learn/intrinsics/cfi/index.html index 06471a46c7a0..29195f308641 100644 --- a/bn/learn/intrinsics/cfi/index.html +++ b/bn/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/character/index.html b/bn/learn/intrinsics/character/index.html index 59e7a14cc392..0203eb98d9b3 100644 --- a/bn/learn/intrinsics/character/index.html +++ b/bn/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/compiler/index.html b/bn/learn/intrinsics/compiler/index.html index 875e7e3a3b6a..0b3624caa256 100644 --- a/bn/learn/intrinsics/compiler/index.html +++ b/bn/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/index.html b/bn/learn/intrinsics/index.html index 91303806e257..70f9a1394d73 100644 --- a/bn/learn/intrinsics/index.html +++ b/bn/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/math/index.html b/bn/learn/intrinsics/math/index.html index a2dd34052a96..7d4f1d8e00e8 100644 --- a/bn/learn/intrinsics/math/index.html +++ b/bn/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/model/index.html b/bn/learn/intrinsics/model/index.html index 024fe5689812..4d93a9acd296 100644 --- a/bn/learn/intrinsics/model/index.html +++ b/bn/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/numeric/index.html b/bn/learn/intrinsics/numeric/index.html index b7c3f8d925aa..f22f34e9476f 100644 --- a/bn/learn/intrinsics/numeric/index.html +++ b/bn/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/parallel/index.html b/bn/learn/intrinsics/parallel/index.html index 532140f24ff9..166ab6a0c331 100644 --- a/bn/learn/intrinsics/parallel/index.html +++ b/bn/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/state/index.html b/bn/learn/intrinsics/state/index.html index 0c8a13b1db2e..72e13cc0228d 100644 --- a/bn/learn/intrinsics/state/index.html +++ b/bn/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/system/index.html b/bn/learn/intrinsics/system/index.html index 5e4ff54dd937..bc888420bd56 100644 --- a/bn/learn/intrinsics/system/index.html +++ b/bn/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/transform/index.html b/bn/learn/intrinsics/transform/index.html index 0425063e167f..382dcdb22873 100644 --- a/bn/learn/intrinsics/transform/index.html +++ b/bn/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/intrinsics/type/index.html b/bn/learn/intrinsics/type/index.html index 5ad89e14aa51..82dd6b8ffa9d 100644 --- a/bn/learn/intrinsics/type/index.html +++ b/bn/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/choose_compiler/index.html b/bn/learn/os_setup/choose_compiler/index.html index e47157c700ca..945ec02dfbb8 100644 --- a/bn/learn/os_setup/choose_compiler/index.html +++ b/bn/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/ides/index.html b/bn/learn/os_setup/ides/index.html index c1b04c6aa09d..3c8234da30a2 100644 --- a/bn/learn/os_setup/ides/index.html +++ b/bn/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/index.html b/bn/learn/os_setup/index.html index a3fc96a20dc6..6dc3767b2374 100644 --- a/bn/learn/os_setup/index.html +++ b/bn/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/install_gfortran/index.html b/bn/learn/os_setup/install_gfortran/index.html index 3ffacb7f4437..cf2279f041fd 100644 --- a/bn/learn/os_setup/install_gfortran/index.html +++ b/bn/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/text_editors/index.html b/bn/learn/os_setup/text_editors/index.html index f8353d3657e3..78eb5d28044a 100644 --- a/bn/learn/os_setup/text_editors/index.html +++ b/bn/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/os_setup/tips/index.html b/bn/learn/os_setup/tips/index.html index 68973e509693..ce509077e3d3 100644 --- a/bn/learn/os_setup/tips/index.html +++ b/bn/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/arrays_strings/index.html b/bn/learn/quickstart/arrays_strings/index.html index 63bcd36ac485..bcad0cc2c146 100644 --- a/bn/learn/quickstart/arrays_strings/index.html +++ b/bn/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/derived_types/index.html b/bn/learn/quickstart/derived_types/index.html index a04fc13e8b15..a84c11c59c89 100644 --- a/bn/learn/quickstart/derived_types/index.html +++ b/bn/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/hello_world/index.html b/bn/learn/quickstart/hello_world/index.html index d052172e279c..457561d4029f 100644 --- a/bn/learn/quickstart/hello_world/index.html +++ b/bn/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/index.html b/bn/learn/quickstart/index.html index ae95469e633f..1ef6be6d2013 100644 --- a/bn/learn/quickstart/index.html +++ b/bn/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/operators_control_flow/index.html b/bn/learn/quickstart/operators_control_flow/index.html index 0081c0bec825..192b2021c509 100644 --- a/bn/learn/quickstart/operators_control_flow/index.html +++ b/bn/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/organising_code/index.html b/bn/learn/quickstart/organising_code/index.html index 6b94d774f793..000ebecee2a1 100644 --- a/bn/learn/quickstart/organising_code/index.html +++ b/bn/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/learn/quickstart/variables/index.html b/bn/learn/quickstart/variables/index.html index 62b761fe78cd..8dfd6c6feb58 100644 --- a/bn/learn/quickstart/variables/index.html +++ b/bn/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2020/02-28-J3-february-meeting/index.html b/bn/news/2020/02-28-J3-february-meeting/index.html index 3dc2a0892338..0af53704ef50 100644 --- a/bn/news/2020/02-28-J3-february-meeting/index.html +++ b/bn/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2020/04-06-Announcing-FortranCon-2020/index.html b/bn/news/2020/04-06-Announcing-FortranCon-2020/index.html index 2f4bf4528d4a..ccb1c6bac6b5 100644 --- a/bn/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/bn/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2020/04-18-Fortran-Webinar/index.html b/bn/news/2020/04-18-Fortran-Webinar/index.html index b14f5cfa01ca..49ae4b53ed17 100644 --- a/bn/news/2020/04-18-Fortran-Webinar/index.html +++ b/bn/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/bn/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index b0ee76d4d440..5234926ff520 100644 --- a/bn/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/bn/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/bn/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 4b52b03e4106..ee1b86298da8 100644 --- a/bn/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/bn/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -426,7 +429,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/bn/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 4eb0839211d9..1ada8f8be757 100644 --- a/bn/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/bn/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/bn/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 49c18cf5c7cb..6cb8c09f5dbb 100644 --- a/bn/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/bn/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -433,7 +436,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/bn/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 4b7300a5f967..fb2b40856f21 100644 --- a/bn/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/bn/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -447,7 +450,7 @@

- Ondřej Čertík + and Laurence Kedward , diff --git a/bn/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/bn/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index 066a26426c7a..b385d4e281bc 100644 --- a/bn/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/bn/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -440,7 +443,7 @@

- Ondřej Čertík + and Laurence Kedward , diff --git a/bn/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/bn/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 5a3d9d9a8468..825d50bc09a5 100644 --- a/bn/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/bn/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -440,21 +443,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , diff --git a/bn/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/bn/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index acbcd86bb961..02de866e488e 100644 --- a/bn/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/bn/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/2020/index.html b/bn/news/2020/index.html index 970ff5fe1cfa..599ffd6f4a10 100644 --- a/bn/news/2020/index.html +++ b/bn/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -607,14 +610,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -628,21 +631,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -709,21 +712,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -737,7 +740,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -811,21 +814,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -839,7 +842,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -906,14 +909,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -927,7 +930,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -994,14 +997,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -1068,7 +1071,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -1082,7 +1085,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/bn/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index a7ef51fa2803..539d02273ee7 100644 --- a/bn/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/bn/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -433,7 +436,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/bn/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index e66e421e4130..55501cbeb916 100644 --- a/bn/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/bn/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/bn/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 39ec35a71d65..9a478e780d28 100644 --- a/bn/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/bn/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/bn/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 927028fc558e..a995f001cb5c 100644 --- a/bn/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/bn/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus diff --git a/bn/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/bn/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index b577ed3b9044..141833687dae 100644 --- a/bn/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/bn/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2021/04-20-First-Year/index.html b/bn/news/2021/04-20-First-Year/index.html index 293d912aad24..60d0f247207b 100644 --- a/bn/news/2021/04-20-First-Year/index.html +++ b/bn/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/bn/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 9bf6afcf24eb..f02b3b87f216 100644 --- a/bn/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/bn/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2021/05-18-Welcome-GSoC-students/index.html b/bn/news/2021/05-18-Welcome-GSoC-students/index.html index 325971a95908..56117f9b29b9 100644 --- a/bn/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/bn/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus diff --git a/bn/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/bn/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 4f6dd3b9a6be..c914d02719d0 100644 --- a/bn/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/bn/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/bn/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/bn/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 6f6a3fa11cf2..3b0d26d36c08 100644 --- a/bn/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/bn/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , diff --git a/bn/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/bn/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index b662f9f2fd26..d59357d2c980 100644 --- a/bn/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/bn/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/bn/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index f73bc6c741f2..4f1418609f76 100644 --- a/bn/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/bn/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/bn/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/bn/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 5965bb755c0d..578cdd944310 100644 --- a/bn/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/bn/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/bn/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index b7601705f967..3e410a9a0317 100644 --- a/bn/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/bn/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/bn/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/bn/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 67267dd306eb..f92bf487ef96 100644 --- a/bn/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/bn/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic diff --git a/bn/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/bn/news/2021/12-29-Fortran-lang-2021-in-review/index.html index b268dd841ccc..724767c9af14 100644 --- a/bn/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/bn/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -426,7 +429,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2021/index.html b/bn/news/2021/index.html index e512bf8c9312..8a48cb7f9fc7 100644 --- a/bn/news/2021/index.html +++ b/bn/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -526,7 +529,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -616,14 +619,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -690,7 +693,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -704,7 +707,7 @@

- Sebastian Ehlert + Milan Curcic @@ -845,7 +848,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -859,7 +862,7 @@

- Sebastian Ehlert + Milan Curcic @@ -926,14 +929,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -993,28 +996,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1088,7 +1091,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1102,7 +1105,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1162,42 +1165,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1259,21 +1262,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1354,21 +1357,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1434,21 +1437,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1522,56 +1525,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -1638,14 +1641,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1705,21 +1708,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -1793,14 +1796,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1814,7 +1817,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/bn/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 73aa5523197a..2dfadab8d865 100644 --- a/bn/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/bn/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/bn/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/bn/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index a81f11d795a6..77f56c2900a6 100644 --- a/bn/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/bn/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , diff --git a/bn/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/bn/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 6adc7f2c4c08..c2895dd86a64 100644 --- a/bn/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/bn/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/bn/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 426190e225b1..536065fe22ff 100644 --- a/bn/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/bn/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/bn/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 43d1dd61740e..98603a0cc7cc 100644 --- a/bn/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/bn/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , diff --git a/bn/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/bn/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index 00b0beb812d1..0352830e8eb7 100644 --- a/bn/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/bn/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/2022/index.html b/bn/news/2022/index.html index 5c05deae2480..642dfb088c4c 100644 --- a/bn/news/2022/index.html +++ b/bn/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,21 +818,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/bn/news/archive/index.html b/bn/news/archive/index.html index b536ab4e40db..653bb9871721 100644 --- a/bn/news/archive/index.html +++ b/bn/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/atom.xml b/bn/news/atom.xml index f3b8118cbfba..24c8e5f024c0 100644 --- a/bn/news/atom.xml +++ b/bn/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:08:29.396543+00:00 + 2023-05-22T09:13:35.117481+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here's what's new in the fortran-lang.org r Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -191,7 +191,7 @@ Fortran news from the previous month.Here's what's new and ongoing in the fortra Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Sebastian Ehlert + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We're happy to announce six students that will work on Fortran projects under @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we've had several updates to the First year of the Fortran website 2021-04-20T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Sebastian Ehlert + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/bn/news/author/alexis-perry-holby/index.html b/bn/news/author/alexis-perry-holby/index.html index 8b5fa0aacc57..47c33b62f93d 100644 --- a/bn/news/author/alexis-perry-holby/index.html +++ b/bn/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,21 +818,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -999,14 +1002,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1073,7 +1076,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1087,7 +1090,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1228,7 +1231,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1242,7 +1245,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1302,21 +1305,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1390,21 +1393,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1478,21 +1481,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/author/and-jeremie-vandenplas/index.html b/bn/news/author/and-jeremie-vandenplas/index.html index 98c51e4f9b7d..f6983a95a8b9 100644 --- a/bn/news/author/and-jeremie-vandenplas/index.html +++ b/bn/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/author/and-laurence-kedward/index.html b/bn/news/author/and-laurence-kedward/index.html index af405bd1a688..af2c7945f09a 100644 --- a/bn/news/author/and-laurence-kedward/index.html +++ b/bn/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -540,7 +543,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -614,21 +617,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -642,7 +645,7 @@

- Ondřej Čertík + and Laurence Kedward , diff --git a/bn/news/author/arjen-markus-and-gary-klimowicz/index.html b/bn/news/author/arjen-markus-and-gary-klimowicz/index.html index 9a986c67b88e..92dba64ba840 100644 --- a/bn/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/bn/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -533,7 +536,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/author/arjen-markus/index.html b/bn/news/author/arjen-markus/index.html index 8d2b03f83ce6..ea7fb8de9d55 100644 --- a/bn/news/author/arjen-markus/index.html +++ b/bn/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -609,56 +612,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus diff --git a/bn/news/author/brad-richardson/index.html b/bn/news/author/brad-richardson/index.html index 23c12c25f528..d02bb34ccbd6 100644 --- a/bn/news/author/brad-richardson/index.html +++ b/bn/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -616,21 +619,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -696,56 +699,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -812,14 +815,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -833,21 +836,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -914,21 +917,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -942,7 +945,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -1016,21 +1019,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -1044,7 +1047,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -1111,7 +1114,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -1125,7 +1128,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/news/author/damian-rouson/index.html b/bn/news/author/damian-rouson/index.html index ec26fbfbd571..d05c8742117a 100644 --- a/bn/news/author/damian-rouson/index.html +++ b/bn/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus diff --git a/bn/news/author/gagandeep-singh/index.html b/bn/news/author/gagandeep-singh/index.html index b656805381ae..12b4942437c5 100644 --- a/bn/news/author/gagandeep-singh/index.html +++ b/bn/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -593,21 +596,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , diff --git a/bn/news/author/gary-klimowicz/index.html b/bn/news/author/gary-klimowicz/index.html index 835039ff6adc..8f08a39ffe66 100644 --- a/bn/news/author/gary-klimowicz/index.html +++ b/bn/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -533,7 +536,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -608,28 +611,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -703,14 +706,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -724,21 +727,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -805,21 +808,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -833,7 +836,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -907,21 +910,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -935,7 +938,7 @@

- Ondřej Čertík + and Laurence Kedward , diff --git a/bn/news/author/giannis-nikiteas/index.html b/bn/news/author/giannis-nikiteas/index.html index d60521e7ff97..3c828cc17ee1 100644 --- a/bn/news/author/giannis-nikiteas/index.html +++ b/bn/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , diff --git a/bn/news/author/henil-panchal/index.html b/bn/news/author/henil-panchal/index.html index df677febbfa8..8e7c23a914f8 100644 --- a/bn/news/author/henil-panchal/index.html +++ b/bn/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/bn/news/author/index.html b/bn/news/author/index.html index 750d8a7f8928..911e06b686cd 100644 --- a/bn/news/author/index.html +++ b/bn/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/author/ivan-pribec/index.html b/bn/news/author/ivan-pribec/index.html index 37be82a78aa2..817bb8a08e86 100644 --- a/bn/news/author/ivan-pribec/index.html +++ b/bn/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -540,21 +543,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , diff --git a/bn/news/author/jeremie-vandenplas/index.html b/bn/news/author/jeremie-vandenplas/index.html index 878de66e330a..3173b985c87a 100644 --- a/bn/news/author/jeremie-vandenplas/index.html +++ b/bn/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -600,21 +603,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -689,7 +692,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -703,7 +706,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -786,21 +789,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -874,14 +877,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -895,7 +898,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -970,28 +973,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -1058,21 +1061,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -1086,7 +1089,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -1160,21 +1163,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -1188,7 +1191,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -1255,14 +1258,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -1276,7 +1279,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/author/laurence-kedward/index.html b/bn/news/author/laurence-kedward/index.html index 106b0ac26947..e664cd9ec650 100644 --- a/bn/news/author/laurence-kedward/index.html +++ b/bn/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -526,7 +529,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -690,14 +693,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -757,28 +760,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -852,7 +855,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -866,7 +869,7 @@

- Sebastian Ehlert + Milan Curcic @@ -926,42 +929,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1023,21 +1026,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1118,21 +1121,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1198,21 +1201,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1286,56 +1289,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -1402,14 +1405,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1469,21 +1472,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -1557,14 +1560,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1578,7 +1581,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1653,28 +1656,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -1748,14 +1751,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -1769,21 +1772,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -1850,14 +1853,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -1871,7 +1874,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1938,14 +1941,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/author/marshall-ward/index.html b/bn/news/author/marshall-ward/index.html index 06d0bb4145a6..dd8996947e31 100644 --- a/bn/news/author/marshall-ward/index.html +++ b/bn/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus diff --git a/bn/news/author/milan-curcic-and-ondrej-certik/index.html b/bn/news/author/milan-curcic-and-ondrej-certik/index.html index 94959376f328..6e931e2e68aa 100644 --- a/bn/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/bn/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -526,7 +529,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/news/author/milan-curcic/index.html b/bn/news/author/milan-curcic/index.html index cf3ce72f8452..a66272d5e76a 100644 --- a/bn/news/author/milan-curcic/index.html +++ b/bn/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,21 +818,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -992,7 +995,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1006,7 +1009,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1170,7 +1173,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1251,7 +1254,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1265,7 +1268,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1332,14 +1335,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1399,28 +1402,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1494,7 +1497,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1508,7 +1511,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1568,42 +1571,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1665,21 +1668,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1760,21 +1763,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1840,21 +1843,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1928,56 +1931,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -2044,14 +2047,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2111,21 +2114,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -2199,14 +2202,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2220,7 +2223,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2295,28 +2298,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -2390,14 +2393,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -2411,21 +2414,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -2492,21 +2495,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2520,7 +2523,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2594,21 +2597,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2622,7 +2625,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2689,14 +2692,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -2710,7 +2713,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2777,14 +2780,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/bn/news/author/ondrej-certik-and-zach-jibben/index.html b/bn/news/author/ondrej-certik-and-zach-jibben/index.html index d225fd63c913..fd681c18b061 100644 --- a/bn/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/bn/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/author/ondrej-certik/index.html b/bn/news/author/ondrej-certik/index.html index 50a534515478..c2a9a90dbcc5 100644 --- a/bn/news/author/ondrej-certik/index.html +++ b/bn/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -667,21 +670,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -756,7 +759,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -770,7 +773,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -860,7 +863,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -874,7 +877,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1015,7 +1018,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1029,7 +1032,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1096,14 +1099,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1163,28 +1166,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1258,7 +1261,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1272,7 +1275,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1332,42 +1335,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1429,21 +1432,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1524,21 +1527,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1604,21 +1607,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1692,56 +1695,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -1808,14 +1811,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1875,14 +1878,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1896,7 +1899,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1971,28 +1974,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -2066,14 +2069,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -2087,21 +2090,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -2168,21 +2171,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2196,7 +2199,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2270,21 +2273,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2298,7 +2301,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2365,14 +2368,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -2386,7 +2389,7 @@

- Ondřej Čertík + Laurence Kedward , diff --git a/bn/news/author/sebastian-ehlert/index.html b/bn/news/author/sebastian-ehlert/index.html index 56cd1b4d801e..9084d8924034 100644 --- a/bn/news/author/sebastian-ehlert/index.html +++ b/bn/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -600,21 +603,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -689,7 +692,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -703,7 +706,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -793,14 +796,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -867,7 +870,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -881,7 +884,7 @@

- Sebastian Ehlert + Milan Curcic @@ -948,7 +951,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -962,7 +965,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1022,28 +1025,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1117,7 +1120,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1131,7 +1134,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1191,42 +1194,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1288,21 +1291,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1376,21 +1379,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1464,56 +1467,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -1573,21 +1576,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -1661,14 +1664,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1682,7 +1685,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1764,14 +1767,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -1785,21 +1788,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , diff --git a/bn/news/author/thomas-konig/index.html b/bn/news/author/thomas-konig/index.html index 1753187014c3..e739ca4c5cfb 100644 --- a/bn/news/author/thomas-konig/index.html +++ b/bn/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -547,7 +550,7 @@

- Ondřej Čertík + and Laurence Kedward , diff --git a/bn/news/author/zachary-moon/index.html b/bn/news/author/zachary-moon/index.html index 60d4ba3edc5f..6e4830b07246 100644 --- a/bn/news/author/zachary-moon/index.html +++ b/bn/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , diff --git a/bn/news/category/index.html b/bn/news/category/index.html index c148f2e68bcc..ab4680700224 100644 --- a/bn/news/category/index.html +++ b/bn/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/category/newsletter/index.html b/bn/news/category/newsletter/index.html index d55c4ff59da8..7c2921c2529e 100644 --- a/bn/news/category/newsletter/index.html +++ b/bn/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,21 +818,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -992,7 +995,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1006,7 +1009,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1170,7 +1173,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1325,7 +1328,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1406,14 +1409,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1473,28 +1476,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1568,7 +1571,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1582,7 +1585,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1642,42 +1645,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1739,21 +1742,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1834,21 +1837,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1914,21 +1917,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -2002,56 +2005,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -2118,14 +2121,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2185,21 +2188,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -2273,14 +2276,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2294,7 +2297,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2369,28 +2372,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -2464,14 +2467,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -2485,21 +2488,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -2566,21 +2569,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2594,7 +2597,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2668,21 +2671,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2696,7 +2699,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2763,14 +2766,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -2784,7 +2787,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2851,14 +2854,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -2925,7 +2928,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -2939,7 +2942,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/news/drafts/index.html b/bn/news/drafts/index.html index cbe08e09194f..3d81edd4de30 100644 --- a/bn/news/drafts/index.html +++ b/bn/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/news/index.html b/bn/news/index.html index 55cd6798ef11..5c54dc522b7d 100644 --- a/bn/news/index.html +++ b/bn/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -600,14 +603,14 @@

- Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Giannis Nikiteas , @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,21 +818,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby , - Jérémie Vandenplas + Gagandeep Singh , @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -992,7 +995,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1006,7 +1009,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1170,7 +1173,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1325,7 +1328,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1406,14 +1409,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1473,28 +1476,28 @@

- Laurence Kedward + Ondřej Čertík , - Zachary Moon + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Zachary Moon , @@ -1568,7 +1571,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1582,7 +1585,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1642,42 +1645,42 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1739,21 +1742,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -1834,21 +1837,21 @@

- Brad Richardson + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Milan Curcic @@ -1914,21 +1917,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward , @@ -2002,56 +2005,56 @@

- Damian Rouson + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Laurence Kedward + Damian Rouson , - Brad Richardson + Laurence Kedward , - Marshall Ward + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Milan Curcic + Marshall Ward , - Sebastian Ehlert + Arjen Markus @@ -2118,14 +2121,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2185,21 +2188,21 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Alexis Perry-Holby , - Jérémie Vandenplas + Laurence Kedward , @@ -2273,14 +2276,14 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2294,7 +2297,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2369,28 +2372,28 @@

- Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Ondřej Čertík + Jérémie Vandenplas , - Jérémie Vandenplas + Laurence Kedward , @@ -2464,14 +2467,14 @@

- Ivan Pribec + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , @@ -2485,21 +2488,21 @@

- Gary Klimowicz + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Ivan Pribec , @@ -2566,21 +2569,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2594,7 +2597,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2668,21 +2671,21 @@

- Brad Richardson + Gary Klimowicz , - and Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Brad Richardson , @@ -2696,7 +2699,7 @@

- Ondřej Čertík + and Laurence Kedward , @@ -2763,14 +2766,14 @@

- Arjen Markus and Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Arjen Markus and Gary Klimowicz , @@ -2784,7 +2787,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -2851,14 +2854,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -2925,7 +2928,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , @@ -2939,7 +2942,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/bn/packages/data-types/index.html b/bn/packages/data-types/index.html index 3cff6cc0b5b7..d6c0575a3e8a 100644 --- a/bn/packages/data-types/index.html +++ b/bn/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/examples/index.html b/bn/packages/examples/index.html index 188c8673d0c0..c9b6182a4f78 100644 --- a/bn/packages/examples/index.html +++ b/bn/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/graphics/index.html b/bn/packages/graphics/index.html index 2c90659c1097..658dfd50a5c2 100644 --- a/bn/packages/graphics/index.html +++ b/bn/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/index.html b/bn/packages/index.html index 30e8bb0883cc..6aa75d876464 100644 --- a/bn/packages/index.html +++ b/bn/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/interfaces/index.html b/bn/packages/interfaces/index.html index 84fcc340bfdf..f5a582b02d89 100644 --- a/bn/packages/interfaces/index.html +++ b/bn/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/io/index.html b/bn/packages/io/index.html index a85132e43464..6016e606d26e 100644 --- a/bn/packages/io/index.html +++ b/bn/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/libraries/index.html b/bn/packages/libraries/index.html index da09a7b661bd..89ec9c74fc95 100644 --- a/bn/packages/libraries/index.html +++ b/bn/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/numerical/index.html b/bn/packages/numerical/index.html index 57620f2e4e8e..203215ce9eed 100644 --- a/bn/packages/numerical/index.html +++ b/bn/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/programming/index.html b/bn/packages/programming/index.html index 676a39e64948..6aa8140a043b 100644 --- a/bn/packages/programming/index.html +++ b/bn/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/scientific/index.html b/bn/packages/scientific/index.html index 173df9783fd3..c50feacc93b9 100644 --- a/bn/packages/scientific/index.html +++ b/bn/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/packages/strings/index.html b/bn/packages/strings/index.html index 85d0d8c61b23..7ba19c93c250 100644 --- a/bn/packages/strings/index.html +++ b/bn/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/roadmap/index.html b/bn/roadmap/index.html index 867f07fc602a..1aadf2f0319b 100644 --- a/bn/roadmap/index.html +++ b/bn/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/bn/search/index.html b/bn/search/index.html index e92a61373770..40676403dcb4 100644 --- a/bn/search/index.html +++ b/bn/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/community/contributing/index.html b/community/contributing/index.html new file mode 100644 index 000000000000..da9e00ffd049 --- /dev/null +++ b/community/contributing/index.html @@ -0,0 +1,752 @@ + + + + + + + + + Contributing to fortran-lang.org — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Contributing to fortran-lang.org#

+

Fortran-lang.org is open-source and contributions are welcome!

+ +
+

Introduction#

+

How is the site written?

+

The content of the website is primarily written in a combination of Markdown (Myst flavoured), HTML and YAML (for data). +This source is compiled to produce pure HTML which is what you see on the final website.

+

The website is static which means that once built, the content on the site is the same for all users; +this is in contrast to many websites that are dynamic, meaning they can serve different content +depending on the user and the inputs supplied by the user.

+

Structural components of the website are written in the Sphinx Static site generator for static features, and JavaScript for dynamic features.

+

Do I need to know HTML to contribute?

+

The majority of the site content is written in Markdown, a simple markup language for formatting text - don’t worry if you haven’t used it before, it’s very easy to pick up!

+

How is the site built?

+

The Fortran-lang site uses the Python-based Sphinx static site generator to compile the RST,Markdown and HTML files. +It is recommended for contributors to install Python on your development computer so that changes can be previewed locally, however this is not mandatory since site previews can be generated during the pull request process (see below for more information). +See README.md for how to setup Sphinx and build the site.

+

The GitHub repository default branch only ever contains the ‘source code’ for the website, not the final compiled result; an automated service compiles this source code every time an update is pushed and stores the compiled result on the gh-pages branch which is served up at https://fortran-lang.org.

+

Therefore, as a contributor you only need to upload changes to the site source code and not the compiled result, because this is built automatically from the source code on the default branch.

+
+
+

Workflow#

+

Contributions to the site are made by pull request to the github repository: https://github.com/fortran-lang/webpage/.

+

The workflow for doing so takes the following form:

+
    +
  1. Create/update a personal fork of webpage

    + +
  2. +
  3. Create a new branch in your fork

    +
      +
    • The branch name should concisely describe your contribution, e.g. fix-spelling-homepage, update-compiler-info

    • +
    +
  4. +
  5. Perform your changes on the local branch

  6. +
  7. Push your modified branch to your fork

    +
      +
    • e.g. git push --set-upstream origin fix-spelling-homepage

    • +
    +
  8. +
  9. Create a pull request in the fortran-lang/webpage from your modified fork branch

    + +
  10. +
+

Note: Before opening a pull request you must build your changes locally using Sphinx (see README.md) to verify that your changes build correctly and render as you expect.

+

Note: You can continue to push changes to your fork branch after you open a pull request - the pull request will update accordingly

+

Your pull request will be reviewed by other members of the community who may request changes. +GitHub provides an easy interface on its website to apply (or reject) any reviewer-suggested changes with a click of a button. +This avoids having to manually copy suggestions to your local copy and push back again. +If you use the “Commit suggestion” button, you will need to update the local copy on your computer using git pull if you intend to push more edits from your computer.

+

Once your pull request is approved, usually by at least two other community members, it will be merged into the webpage default branch by the maintainers at which point it will be published to the fortran-lang.org site.

+

If required, the repository maintainers can build a public preview of your proposed changes which will be available to view at fortran-lang.org/pr/<pr_id>/ where <pr_id> is the numeric identifier of your pull request.

+

This allows reviewers to directly view the generated result of your PR.

+

Note: if you push subsequent commits to your pull request branch, you must rebuild the pull request preview by commenting on +the pull request with ‘#build_preview’.

+

After a pull request has been merged and successfully rendered, the workflows will delete the preview build.

+

Note: if your pull request preview link doesn’t work or doesn’t update after re-building, try adding a random parameter to the end of the URL, e.g. https://fortran-lang.org/pr/98?v=2 - the name and value of the parameter don’t matter, but use different values for each update. +This will force the GitHub content delivery network to serve you an updated version instead of a cached version which is out-of-date.

+
+
+

Style guide#

+
+

Markdown#

+
    +
  • Place code excerpts in code blocks, +denoted by back ticks (```). Use inline code style (`code`) for inline code excerpts, programming language keywords, variables names and file names.

  • +
  • Have no more than one sentence per source-code line, and break-up long sentences across multiples lines - +this is important to avoid large git diffs and code review blocks on github.

  • +
+
+ + +
+

Icon packs#

+

Icons are an easy way to improve page aesthetic by breaking-up otherwise monotonic text passages and drawing attention to headings or key information.

+

Three icon packs are available for use on fortran-lang.org:

+ +

Example: Font awesome

+
<i class="fas fa-info-circle"></i>
+
+
+

Example: Sphinx design Myst directives

+
{octicon}`book;1em;sd-text-info`
+
+
+

Visit the respective websites to browse available icons.

+
+
+

Page contents#

+

It is sometimes helpful to display hyperlinked page contents for lengthy pages. The page TOC tree has been automated and will generate the TOC of the current page. Whereas the method to generate TOC of the entire directory on Fortran-lang.org is:

+

For pages in MD:

+

add the toc tree directive in md at the end of the index page of the directory with the names of the all files in that directory.

+
+````{toctree}  
+:hidden:
+ARRAY_index 
+```` 
+
+
+
+
+

Tutorials#

+

Guidelines for mini-book content.

+
+

General#

+

Use the book layout.

+

Follow the Markdown guidelines.

+
+
+

Code style#

+

Use two spaces for indentation, indenting bodies of units but keeping the contains statement at the same level as its module or type. Try to limit line length to 90 characters. These considerations should make the code more readable and easier to view on devices with smaller viewport widths.

+
module m
+  implicit none
+  private
+  public :: a_t
+
+  type :: a_t
+    integer :: val
+  contains
+    procedure :: func
+  end type a_t
+
+contains
+
+  subroutine func(self)
+    class(a_t), intent(in) :: self
+    if (self%val > 0) then
+      print *, self%val
+    end if
+  end function func
+
+end module m
+
+
+

Each code block should have a base indentation level of 0, even if it would be indented if put into a larger context.

+
integer :: i1  ! yes
+  integer :: i2  ! no
+
+
+

Avoid vertically aligning :: and inline comments since this adds maintenance burden and pushes the line length in most cases.

+

If a code block contains lines that are not valid Fortran, leave it as a language-less code block to avoid the syntax highlighter’s red boxes.

+
module <module name>
+...
+end module <module name>
+
+
+

Feel free to omit spacing in expressions where it helps with readability, but generally include whitespace around operators.

+
y1 = a * b
+y2 = a*b + c*d  ! instead of a * b + c * d
+y3 = a**2 + 1
+y4 = (a*b + c*d) / 2
+s3 = s1 // s2
+
+
+

Generally add a space after commas, except when indexing with short index values or variables names.

+
a(:,1)
+a2(1:10, 2:5)
+b(i,j)
+b2(long_i_name, long_j_name)
+b3(i + 2, j)
+call some_subroutine(a, b, an_option=.false.)
+c = [1, 2, 3, 10]
+d = [(i, i = 1, 10)]
+do i = 1, 10
+! ...
+
+
+

Other situations besides simple indexings where white space can be omitted:

+
    +
  • Aliasing in imports

    +
    use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double
    +
    +
    +
  • +
  • String concatentation

    +
    print *, 'hello '//'world'
    +
    +
    +
  • +
  • Accessing components (attributes) of derived types

    +
    p%x
    +p%calc_something(a, b)
    +
    +
    +
  • +
  • Around = when passing keyword arguments

    +
    call sr(a, b, c=3)
    +point = t_point(x=1., y=2.)
    +character(len=:), allocatable :: s
    +
    +
    +
  • +
+

Capitalize the first letter for inline comments except for trailing inline comments that only consist of one word or a short phrase.

+
! Compute new values
+y = m*x + b  ! meters
+
+
+

These code style recommendations are similar to those in the DFTB+ style guide.

+
+
+

Text#

+

Use sentence case (as opposed to title case) for page and section titles.

+

Use emphasis (*emphasis*/_emphasis_, rendered as italic) for key words/phrases when they are first introduced, for emphasis, …

+

Avoid use of strong (**strong**, rendered as bold) within paragraphs, since bold style is used for headings, drawing attention to examples (Example:), admonition/aside titles, etc.

+

Make use of the admonition/aside (note, tip, important) where appropriate.

+
    +
  • to add a note to md document use:

  • +
+
+::::{note}
+extra information, something that might appear in a footnote
+::::: 
+
+
    +
  • to add a tip to md document use:

  • +
+
+::::{tip}
+information about best practices, practical tips
+::::: 
+
+
    +
  • to add an important text to md document use:

  • +
+
+::::{importrant}
+warnings, things to avoid, etc.
+::::: 
+
+

Prefer including the Oxford comma. It usually makes things more clear.

+
+

Fortran is fast, fun, and famed.

+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/community/history/index.html b/community/history/index.html new file mode 100644 index 000000000000..678e495dcd2f --- /dev/null +++ b/community/history/index.html @@ -0,0 +1,583 @@ + + + + + + + + + Fortran-lang history — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Fortran-lang history#

+
+

Creation#

+

The effort to build a new community around Fortran started at the beginning of 2020 +and was initially led by Ondřej Čertík [1] and Milan Curcic [2]. +Starting in several discussions around ambitious proposals for the Fortran Standards +Committee, the Fortran Standard Library (stdlib) [3], the Fortran +Package Manager (fpm) [4] and the fortran-lang.org +webpage with new logo [5] were created. +With the new webpage and projects attracting more contributors, the Fortran-lang discourse +was created to provide a place for general discussions around all the things Fortran, +announcing newly started projects, getting help, etc. +Since its creation the Fortran-lang community was joined by hundreds of contributors.

+
+
+

Incubator J3 repo#

+
+
+

The Fortran Standard Library stdlib#

+

Created in the late 2019 the Fortran Standard Library provides +a community driven and agreed upon de facto “standard” library for Fortran. +The library is a collection of modules that provide a wide range of +functionality, including: containers, sorting, searching, linear algebra, +unities, fast Fourier transforms, and more.

+

Find out more about stdlib on our website +and on GitHub.

+
+
+

The Fortran Package Manager fpm#

+

Fortran Package Manager (fpm) is a package manager and build system for Fortran. +Its key goal is to improve the user experience of Fortran programmers. +It does so by making it easier to build your Fortran program or library, run the +executables, tests, and examples, and distribute it as a dependency to other +Fortran projects. +Fpm’s user interface is modeled after Rust’s Cargo, +so if you’re familiar with that tool, you will feel at home with fpm. +Fpm’s long term vision is to nurture and grow the ecosystem of modern Fortran +applications and libraries.

+
+
+

Fortran Discourse#

+
+
+

Fortran Package Index#

+
+
+

Project migration to Fortran-lang#

+

Over time crucial projects to the Fortran community were migrated to the +Fortran-lang organization to allow for community collaboration and to ensure +long-term sustainability of the projects.

+
+

fftpack#

+
+
+

minipack#

+
+
+

test-drive#

+
+
+

vscode-fortran-support#

+ +

Modern Fortran for Visual Studio Code is feature-rich Visual extension +for Fortran originally created by +Miguel Carvajal and maintained by Giannis Nikiteas. +The extension migrated in early 2022 to the Fortran-lang organization +to improve integration with other Fortran-lang projects such as fpm +and allow for easier community collaboration.

+

Find out more about Modern Fortran for Visual Studio Code on +VS Code Marketplace +and on GitHub.

+
+
+

fortls#

+ +

fortls is a Fortran language server created by Giannis Nikiteas +in late 2019. The project started as a fork of the +archived project fortran-language-server but quickly diverged from it +both in terms of features and codebase. The project migrated to the +Fortran-lang organization in late 2022 to allow for easier community +collaboration.

+

Find out more about fortls on our website +and on GitHub.

+
+
+
+

Fortran Publication#

+

In April 2022, members of the Fortran-lang community published a paper in +Computing in Science & Engineering titled The State of Fortran +providing an overview of the language and its ecosystem. +The paper focused on the ongoing efforts +of developing the Fortran standard library (stdlib) +and the Fortran package manager (fpm), +fostering a friendly and welcoming community online (Fortran-lang Discourse), +improving compiler support and language feature development.

+
+
+

Conferences and Events#

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/community/index.html b/community/index.html index c87a3163ea7d..976e21865da7 100644 --- a/community/index.html +++ b/community/index.html @@ -1,13 +1,1943 @@ - - - - - + + + + + + + + Community — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ + + + + +
+

Community#

+
+

Fortran-lang Community

+
+
+

Collaboration for the advancement of Fortran

+
+
+

Fortran-lang Community Projects

+
+
+
+
+
+
+
+

Fortran Standard Library (stdlib)

+
+

A community-driven project for a de facto ‘standard’ library for Fortran. The stdlib project is both a specification and a reference implementation, developed in cooperation with the Fortran Standards Committee. +GitHub,Documentation,Contributing.

+
+

Fortran Package Manager (fpm)

+
+

A prototype project to develop a common build system for Fortran packages and their dependencies. +GitHub,Documentation,Contributing.

+
+

fortran-lang.org

+
+

This website is open source and contributions are welcome!. +GitHub,Contributing.

+
+
+
+
+
+
+
+ - -Page Redirection - -If you are not redirected automatically, follow the link. +
+
+
+
+
+
+

History

+
+

The effort to build a new community around Fortran started at the beginning of 2020 +and was initially led by Ondřej Čertík [1] and Milan Curcic [2]. +Starting in several discussions around ambitious proposals for the Fortran Standards +Committee, the Fortran Standard Library (stdlib) [3], the Fortran +Package Manager (fpm) [4] and the fortran-lang.org +webpage with new logo [5] were created. +With the new webpage and projects attracting more contributors, the Fortran-lang discourse +was created to provide a place for general discussions around all the things Fortran, +announcing newly started projects, getting help, etc. +Since its creation the Fortran-lang community was joined by hundreds of contributors.

+

Read more

+
+

Get Involved

+
+
+
+
+
+
+
+

Join the Discussion

+
+

The easiest way to join the community and contribute is by +commenting on issues and pull requests in the project +repositories.

+

Whether Fortran beginner or seasoned veteran, your feedback and comments are most +welcome in guiding the future of Fortran-lang.

+
+
+
+
+
+
+
+

Build and Test

+
+

Get more involved with each project by cloning, building and testing +it on your own machine(s) and with your own codes; +if something doesn’t work, create an issue to let us know! +We value user feedback highly, be it a bug report, feature request, or +suggestion for documentation.

+
+
+
+
+
+
+
+

Contributor Guide

+
+

Want to contribute code and content? +Check out the contributor guides in each repository for information +on the project workflow and recommended practices.

+

Contributor guide for stdlib
+Contributor guide for fpm
+Contributor guide for fortran-lang.org

+
+
+
+
+
+
+
+

Community Conduct

+
+

As a community, we strive to make participation in our discussions and projects a friendly and harassment-free experience for everyone. +See the full Code of Conduct.

+
+
+
+
+
+
+

Fortran-lang Contributors

+
+ +
+

source: https://git-contributor.com/

+
+
+

Contributors:

+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top + +
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+card-img-top +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/community/minibooks/index.html b/community/minibooks/index.html new file mode 100644 index 000000000000..16a75e81a939 --- /dev/null +++ b/community/minibooks/index.html @@ -0,0 +1,695 @@ + + + + + + + + + Mini-book Tutorials on fortran-lang.org — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Mini-book Tutorials on fortran-lang.org#

+

This guide will cover how to write mini-book tutorials for the Learn +section of https://fortran-lang.org.

+

See contributing guidelines for general guidance on contributing to https://fortran-lang.org.

+
+

0. Mini-book formats#

+

Mini-books are designed to be mostly self-contained tutorials on a particular feature of the Fortran language.

+

There are two types of mini-book format:

+
    +
  • Single-page: all content is written within a single markdown file and displayed +on a single webpage;

  • +
  • Multi-page: tutorial content is written across multiple markdown files and displayed +as a collection of webpages.

  • +
+

The choice of book type depends on the length of your content and how you intend to structure it.

+

Consider the table of contents that will be produced:

+
    +
  • Single-page books have one level of navigation: a link for each heading in the tutorial in inpage-toc (toc on the right hand side of the page).

  • +
  • Multi-page books have two levels of navigation: a link for each heading in the tutorial in inpage-toc (toc on the right hand side of the page) and sidebar-toc (toc on the left hand side of the page showing different pages in directory).

  • +
+

Single-page mini-books are simpler to produce and should be used for brief topics or short tutorials that will +eventually be subsumed into a more-comprehensive multi-page book.

+

Multi-page books are recommended for more-comprehensive tutorials that can be structured with one subtopic per page.

+

The rest of this guide is split into two sections, one each for the single-page and multi-page book types.

+
+
+

1. Single-page mini-book#

+

The steps required for publishing a single-page mini-book are:

+
    +
  • Create a new markdown document in the ./learn directory

  • +
  • Write your tutorial content

  • +
  • Add an entry to data/learning.yml for your new mini-book

  • +
  • Open a pull request

  • +
+
+

1.1 Writing your mini-book in markdown#

+

For single-page mini-books your tutorial will be entirely contained within a single markdown document.

+

First create a new markdown document in the ./learn/{{name_of_minibook}}/ directory with the .md file extension +and a short name that concisely describes the topic of your tutorial, e.g. ./learn/{{name_of_minibook}}/file_io.md.

+

Open your new markdown file and append an entry in the toc of learn.md in the following format:

+
:::{toctree}
+:hidden:
+
+learn/quickstart/index
+learn/best_practices/index
+learn/os_setup/index
+learn/building_programs/index
+learn/intrinsics/index
+learn/{{book-filename}}
+:::
+
+
+

Replace {{book-filename}} with the filename of your markdown file +but excluding the .md extension. There should also be no trailing slash.

+

Example: header

+
:::{toctree}
+:hidden:
+
+learn/quickstart/index
+learn/best_practices/index
+learn/os_setup/index
+learn/building_programs/index
+learn/intrinsics/index
+learn/file_io
+:::
+
+
+

NOT: permalink: /learn/file_io.md

+

NOT: permalink: /learn/file_io/

+

You can now fill the rest of the file with your tutorial content written in markdown; +see Kramdown syntax for documentation on +the markdown implementation.

+
+
+

1.2 Structuring your mini-book with headings#

+

You should use headings to break-up your single-page mini-book into a logical structure. +Each heading will show up in the hyperlinked table-of-contents.

+

In markdown, headings can be written as:

+
# Heading level 1
+
+## Heading level 2
+
+### Heading level 3
+
+#### Heading level 4
+
+##### Heading level 5
+
+###### Heading level 6
+
+
+

Note: make sure to include a blank line before your heading.

+
+
+

1.3 Add your mini-book to the Learn page#

+

To add your new mini-book to the Learn page, you need to add a new entry +in the data/learning.yml datafile.

+

Open this file and create a new entry under the books: field in the following format:

+
- title: {{book-title}}
+  description: {{book-description}}
+  category: {{book-category}}
+  link: /learn/{{book-filename}}
+
+
+

The title field is what will be displayed on the Learn page for your mini-book +and should generally be the same as the title field in your markdown file, but this isn’t required.

+

The contents of the description field is also displayed on the Learn page +and should briefly summarise the contents of your mini-book tutorial.

+

The category field should match one of the categories listed at the top of the data file (under +the categories: field) and is used to group tutorials on the Learn page.

+

The link field should exactly match the permalink field in your markdown document.

+

Example: learning.yml book entry

+
- title: File input and output
+  description: A tutorial on reading and writing files in Fortran
+  category: Getting started
+  link: /learn/file/file_io
+
+
+

Save the modified learning.yml data file and run fortran_package.py and rebuild the website on your local machine to check the results. +If successful, a new link should appear on the _Learn* page with the title of your new mini-book.

+

Once you have completed your mini-book and added an entry to the learning.yml data file, open a pull request +at https://github.com/fortran-lang/webpage (see CONTRIBUTING).

+
+
+
+

2. Multi-page mini-books#

+

The steps required for publishing a multi-page mini-book are:

+
    +
  • Create a new folder in the ./learn/ directory

  • +
  • Create an index.md file in your new folder

  • +
  • Write your tutorial content in markdown files in your new folder

  • +
  • Add an entry to data/learning.yml for your new mini-book

  • +
  • Open a pull request

  • +
+
+

2.1 Create a new folder for your mini-book#

+

Create a new folder in the ./learn/ directory with a short name that concisely describes the topic of your tutorial, e.g. ./learn/coarrays/. +All pages of your mini-book will be contained within this folder.

+

The first page of your mini-book should be called index.md, so create a new markdown file in +your mini-book folder called index.md, and add a toc in the following format in all the markdown files:

+
:::{toctree}
+:hidden:
+
+file1
+file2
+:::
+
+
+

There should be no trailing slash.

+

Example: toc for index.md

+
:::{toctree}
+:hidden:
+
+learn/quickstart/index
+learn/best_practices/index
+learn/os_setup/index
+learn/building_programs/index
+learn/intrinsics/index
+:::
+
+
+

NOT: permalink: /learn/coarrays/

+

you should populate the remainder of index.md with an introduction to your mini-book tutorial which may include: a summary of the concepts covered; any prerequisites; and any references to other related mini-books or useful third-party resources.

+
+
+

2.2 Add pages to your mini-book#

+

For each new page in your mini-book, create a new markdown file in your mini-book folder.

+

As with single-page mini-books, you should use headings to break-up each +page into a logical structure. +Each heading on the current page will show up in the inpage table-of-contents.

+
+
+

2.3 Add your mini-book to the Learn page#

+

To add your new mini-book to the Learn page, you need to add a new entry +in the data/learning.yml datafile.

+

Open this file and create a new entry under the books: field in the following format:

+
- title: {{book-title}}
+  description: {{book-description}}
+  category: {{book-category}}
+  link: /learn/{{book-folder}}
+  pages:
+    - link: /learn/{{book-folder}}/{{page1-filename}}
+    - link: /learn/{{book-folder}}/{{page2-filename}}
+    - link: /learn/{{book-folder}}/{{page3-filename}}
+
+
+

The title field is what will be displayed on the Learn page for your mini-book +and should generally be the same as the title field in your index.md markdown file, but this isn’t required.

+

The contents of the description field is also displayed on the Learn page +and should briefly summarise the contents of your mini-book tutorial.

+

The category field should match one of the categories listed at the top of the data file (under +the categories: field) and is used to group tutorials on the Learn page.

+

The top-level link field should exactly match the permalink field in your index.md file.

+

Each link field under pages should exactly match the permalink field in each of your subsequent mini-book pages.

+

Example: learning.yml book entry

+
- title: Parallel programming with Coarrays
+  description: A tutorial on parallel programming using coarrays
+  category: Parallel programming
+  link: /learn/coarrays
+  pages:
+    - link: /learn/coarrays/background
+    - link: /learn/coarrays/codimension
+    - link: /learn/coarrays/examples
+
+
+

Save the modified learning.yml data file and run fortranpackage.py and rebuild the website on your local machine to check the results. +If successful, a new link should appear on the _Learn page with the title of your new mini-book.

+

Once you have completed your mini-book and added an entry to the learning.yml data file, open a pull request +at https://github.com/fortran-lang/fortran-lang.org (see CONTRIBUTING).

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/community/packages/index.html b/community/packages/index.html new file mode 100644 index 000000000000..af92ce947503 --- /dev/null +++ b/community/packages/index.html @@ -0,0 +1,632 @@ + + + + + + + + + Fortran-lang.org package index — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Fortran-lang.org package index#

+
+

Package criteria#

+

The following criteria are required of packages to be indexed:

+
    +
  • Relevance: the package must be primarily implemented in Fortran or provide +a complete Fortran interface to an existing package or be purposed solely towards +software development in Fortran.

  • +
  • Maturity: the primary functionality of the package shall be implemented. +No prototype, testing or partially complete packages will be accepted. +If the package is hosted on github or similar, it should have at least 5 ‘stars’.

  • +
  • Availability: the package source shall be freely available for browsing online +or cloning or downloading

  • +
  • Open source: the package shall be licensed under an appropriate open-source license +with the license file clearly included with the source code

  • +
  • Uniqueness: the package shall not be a fork or minor revision of existing packages

  • +
  • README: the package shall have some form of README or landing-page clearly +stating the package purpose and functionality. This should also contain information on the package dependencies and the steps required to build and run.

  • +
+

The following criteria are not required but are recommended:

+
    +
  • Documentation: any form of written documentation aimed at users of the package. Ideally +this should cover:

    +
      +
    • Supported / tested compilers

    • +
    • Dependencies

    • +
    • Build and install process

    • +
    • Modules contained within the package

    • +
    • Procedures made available and their interfaces

    • +
    • Example code

    • +
    +
  • +
  • Contributing: details on how users may submit issues and contribute to the development of the +package

  • +
  • Tests: any form of executable test(s) that can be used to verify the functionality of the package

  • +
  • Portability: no non-standard language extensions or proprietary dependencies

  • +
  • FPM: support installation by the Fortran Package Manager fpm

  • +
+
+
+

Process for adding packages#

+
    +
  1. Users should confirm that their project meets the minimum requirements for listing in the +Fortran-lang package index, as written in this document

  2. +
  3. Users should open a pull request using the ‘Package index request’ template

  4. +
  5. At least three Fortran-lang community members shall review the request against the criteria above

  6. +
  7. If three or more Fortran-lang community members agree that the package should be listed and there is no significant objection, then the pull request will be merged

  8. +
+
+
+

Package index requests#

+

Package index requests are made by pull requests against the fortran-lang.org repository. +See this guide for guidance on forking and making pull requests.

+

Package details are listed in the data/package_index.yml data file.

+

To add a package simply create a new entry within this file. +The data file is ordered by high-level categories merely to aid in navigation; +find the appropriate category for your package and create a new entry.

+
+

After adding a new entry to package index, run the github action fortran_packages before building the sphinx build.#

+
+
+

Github hosted packages#

+
  - name: <Package_name>
+    github: <github_user>/<repository_name>
+    description: <single_line_description>
+    categories: <category1> [category2]
+    tags: [tag1] [tag2] [tag3]
+    version: [version]
+    license: [license]
+
+
+

Valid categories:

+
    +
  • libraries: general libraries

  • +
  • interfaces: libraries that provide interfaces to other libraries, software or devices

  • +
  • programming: general programming utilities: errors, logging, testing, documentation etc.

  • +
  • data-types: libraries providing advanced data types: containers, datetime, resizable arrays etc.

  • +
  • strings: string handling libraries

  • +
  • io: libraries that parse and generate various file formats

  • +
  • graphics: plotting and GUIs

  • +
  • numerical: matrices, linear algebra, solvers, root-finding, interpolation, optimization, differential eqns, statistics, machine learning, random numbers etc.

  • +
  • scientific: domain-specific scientific libraries or applications

  • +
  • examples: repositories offering language feature demonstrations, tutorials and benchmarks

  • +
+

Projects listing more than one category must provide good justification thereof in the pull request.

+

Notes:

+
    +
  • The package description should clearly describe the functionality of the package in a single sentence.

  • +
  • Tags (optional) should contain any terms not already contained in the name or description that users may search directly for. Tags should be separate by spaces.

  • +
  • Package version

    +
      +
    • this can be determined automatically if a versioned release has been created on github

    • +
    • if version is specified, it will override any detected github version

    • +
    • if version is ‘none’, then no version information will be displayed. (Use this if +your package has no version.)

    • +
    +
  • +
  • Package license

    +
      +
    • this can be determined automatically if github is able to detect a known license

    • +
    • license must be specified if github is unable to detect a known license

    • +
    +
  • +
+
+
+

Non-github hosted packages#

+
  - name: <Package_name>
+    url: <repo_url>
+    description: <single_line_description>
+    categories: <category1> [category2]
+    tags: [tag1] [tag2] [tag3]
+    version: [version]
+    license: <license>
+
+
+

Notes:

+
    +
  • License and version information cannot be detected automatically for non-github repositories

  • +
  • if your package has no version, then omit the version field

  • +
  • a license must be specified for non-github repositories

  • +
+
+
+

Member review checklist#

+

Community members reviewing packages should cover the following points:

+
    +
  1. Ensure the package meets the minimum criteria as written in this document

  2. +
  3. Check the package metadata

    +
      +
    • Repository exists and is accessible

    • +
    • Description clearly and concisely describes the package

    • +
    • Assigned category is appropriate

    • +
    +
  4. +
  5. Check license information

    +
      +
    • If license field has been omitted: check that github has detected the license

    • +
    • If license field is included: check that it matches repository license file

    • +
    +
  6. +
+

After merge:

+
    +
  • Check that package is available in expected category and search

  • +
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/compilers/index.html b/compilers/index.html index b257d6afa4e5..b5146eb6eb88 100644 --- a/compilers/index.html +++ b/compilers/index.html @@ -1,13 +1,597 @@ - - - - - + + + + + + + + Compilers — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +

Fortran Compilers

+

Fortran has over a dozen open source and commercial compilers.

+
+

Compilers#

+

Open source compilers

+

GNU Fortran Compiler

+

GNU Fortran Compiler (gfortran) is a mature +free and open source compiler, part of the GNU Compiler Collection.

+

OpenCoarrays is a library and compiler wrapper +around gfortran which enables the parallel programming features of Fortran 2018 +with gfortran.

+

LLVM Flang

+

Flang +is a new front-end for Fortran 2018 that has been recently +added to LLVM. +It is implemented in modern C++ and uses a Fortran-oriented MLIR dialect for lowering to LLVM IR. +This project is under active development.

+

Current Flang

+

Flang is an open source compiler +based on the NVIDIA/PGI commercial compiler.

+

LFortran

+

LFortran is a modern, interactive, LLVM-based Fortran +compiler. +Also available online at dev.lfortran.org using a statically served, WASM based LFortran Compiler for running code in web browsers.

+

Commercial compilers

+

Intel oneAPI

+

Intel oneAPI +is Intel’s suite of compilers, tools, and libraries for Fortran, C, C++, and +Python. Intel oneAPI HPC Toolkit provides +two Fortran compilers:

+
    +
  • Intel Fortran Compiler (ifx), a new, LLVM-based compiler +that comes with full Fortran 2018 support. It also supports the majority of OpenMP 5.0/5.1 including offload to Intel GPUs. +ifx can also offload do concurrent to Intel GPUs.

  • +
  • Intel Fortran Compiler Classic (ifort), a mature compiler +with full Fortran 2018 support, for CPUs only.

  • +
+

The current version of Intel oneAPI is available for free, and support can be purchased. +Currently the ifx compiler supports Linux and Windows platforms for x86-64 architectures. ifort supports Linux, Windows, and macOS. +Community support is available for the free version at the Intel Developer forum. +Optionally, you can purchase Priority Support with additional benefits including access to previous versions of ifort and ifx.

+

NAG

+

The latest NAG Fortran Compiler +release (7.0) has extensive support for legacy and modern Fortran features including parallel programming with coarrays, as well as additional support for programming with OpenMP.

+

The Compiler also provides significant support for Fortran 2018 (atomic +operations, events and tasks, plus other smaller features), almost all of +Fortran 2008, complete coverage of Fortran 2003, and all of OpenMP 3.1. All +platforms include supporting tools for software development: source file +polishers, dependency generator for module and include files, call-graph +generator, interface builder and a precision unifier.

+

NVIDIA

+

The NVIDIA HPC SDK C, C++, and Fortran compilers, former PGI compilers, support GPU acceleration of HPC modeling and simulation applications with standard C++ and Fortran, OpenACC® directives, and CUDA®. GPU-accelerated math libraries maximize performance on common HPC algorithms, and optimized communications libraries enable standards-based multi-GPU and scalable systems programming.

+

NVHPC compilers are available free of charge. +Currently the compiler supports Linux platforms and x86_64, ppc64le and aarch64 architectures. +Community support is available at the HPC compiler forum.

+

HPE / Cray

+

The Cray Compiling Environment (CCE) +is the cornerstone innovation of Cray’s adaptive computing paradigm. CCE builds +on a well-developed and sophisticated Cray technology base that identifies +regions of computation that are either sequential scalar, vector parallel or +highly multithreaded. It includes optimizing compilers that automatically +exploit the scalar, vector and multithreading hardware capabilities of the Cray +system. CCE supports Fortran, C and C++.

+

IBM

+

IBM® XL Fortran +for Linux is an industry standards-based programming tool used to develop large +and complex applications in the Fortran programming language. It generates code +that leverages the capabilities of the latest POWER9 architecture and maximizes +your hardware utilization. IBM XL Fortran for Linux optimizes your +infrastructure on IBM Power Systems™ in support of extensive numerical, +scientific and high-performance computing.

+

A community edition of the IBM XL compilers are available free of charge. +The compilers support Linux and AIX platforms and ppc64le architectures.

+

AMD

+

The AMD Optimizing C/C++ Compiler (AOCC) +compiler system is a high performance, production quality code generation tool. +The AOCC environment provides various options to developers when building and +optimizing C, C++, and Fortran applications targeting 32-bit and 64-bit Linux® +platforms. The AOCC compiler system offers a high level of advanced +optimizations, multi-threading and processor support that includes global +optimization, vectorization, inter-procedural analyses, loop transformations, +and code generation. AMD also provides highly optimized libraries, which extract +the optimal performance from each x86 processor core when utilized. The AOCC +Compiler Suite simplifies and accelerates development and tuning for x86 +applications.

+

The AOCC compilers are available free of charge and support Linux platforms with x86_64 architectures.

+

ARM

+

Linux user-space Fortran compiler. +Tailored for HPC and scientific codes, with support for popular Fortran and +OpenMP standards and tuned for leading server-class Arm-based platforms. Built +on the open source Flang front-end, and the LLVM‑based optimization and code +generation back-end. Available as part of the Arm Compiler for Linux package.

+

Absoft

+

Absoft compilers include Pro Fortran +delivering Absoft’s exclusive AP load balancing, AVX, OpenMP 3.1, +extended Fortran 95 compiler with F2003 and F2008 features, FX3 graphical debugger, +native tool suite integration, AMDAL HPC scientific and engineering library, and more. +Pro Fortran includes Fast Data Visualization, an Absoft exclusive technology for +graphical rendering and data output.

+

Oracle / Sun

+

Oracle C, C++, Fortran Compiler +is highly optimized for Oracle systems, on-premise and in the cloud

+
    +
  • Advanced code generation technology for the latest Oracle SPARC and x86 based systems

  • +
  • Support for the latest industry standards, including C++14, C++11, C11 and OpenMP 4.0 and extensive GCC compatibility features

  • +
  • Automatic code analysis during compilation and automatic stack overflow protection at application runtime

  • +
+

Lahey / Fujitsu

+

LF Professional v7.8 combines the 32/64-bit LGF Rainier compiler with the classic +Lahey/Fujitsu LF95 compiler. LGF Rainier has full Fortran +95/90/77 compliance with extensive support for the Fortran 2003 and 2008 standards. +Lahey/Fujitsu LF95 offers best in class diagnostics. +Includes the automatic-parallelizing GFortran compiler, Lahey/Fujitsu Fortran 95 +compiler, Visual Studio Fortran support, Winteracter WiSK Graphics package, and more.

+

Silverfrost FTN95

+

Silverfrost FTN95 is a full Fortran 95 standards +compliant compiler, capable of producing fast executables for Win32 and for +Microsoft .NET. FTN95 ships with the world’s best runtime checking and a great +range of supporting software. All standard and many vendor-specific legacy +language features are supported, so that Fortran projects may be any combination +of Fortran 77, Fortran 90 and Fortran 95. +Some features of Fortran 2003 and 2008 have been added. +Silverfrost Fortran runs on Windows / x86_64. There is a free personal edition.

+

NEC

+

The Fortran compiler +conforms to the Fortran-2003 standard (ISO/IEC 1539-1:2004) and supports many +features from Fortran-2008 (ISO/IEC 1539-1:2010).

+

LCC

+

MCST C, C++, Fortran Compiler with full support of Fortran-95 +(ISO/IEC 1539:1997) and partial support of Fortran-2003 (ISO/IEC 1539:2004), +Fortran-2008 (ISO/IEC 1539:2010) and Fortran-2018 (ISO/IEC 1539:2018). Used for +russian processor architectures Elbrus (e2k) and SPARC (MCST-R), also a cross-compiler +for x86_64 architecture is available.

+

Discontinued

+

The following is a list of Fortran compilers that seem discontinued, so we do +not list them above:

+
    +
  • Apogee

  • +
  • Edinburgh Portable Compilers

  • +
  • Hewlett Packard

  • +
  • Watcom

  • +
  • PathScale

  • +
  • G95

  • +
  • Open64

  • +
  • Unisys

  • +
+

Note

+

Please let us know if there is any compiler that is not listed, or if we listed +a compiler in the Discontinued section and it is in fact actively maintained.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/cs/.doctrees/community.doctree b/cs/.doctrees/community.doctree index 134663f3d9c2..97f5c57a751a 100644 Binary files a/cs/.doctrees/community.doctree and b/cs/.doctrees/community.doctree differ diff --git a/cs/.doctrees/environment.pickle b/cs/.doctrees/environment.pickle index 52a4eb84e3d4..532cb2342893 100644 Binary files a/cs/.doctrees/environment.pickle and b/cs/.doctrees/environment.pickle differ diff --git a/cs/community/contributing/index.html b/cs/community/contributing/index.html index 5c02e3f4bc79..137e40957b08 100644 --- a/cs/community/contributing/index.html +++ b/cs/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/community/history/index.html b/cs/community/history/index.html index cae06dc357c6..c8c7ae7ae6e6 100644 --- a/cs/community/history/index.html +++ b/cs/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/community/index.html b/cs/community/index.html index 9c5da70e2af0..0e323bc44045 100644 --- a/cs/community/index.html +++ b/cs/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/community/minibooks/index.html b/cs/community/minibooks/index.html index 5347d887915f..0867778afca2 100644 --- a/cs/community/minibooks/index.html +++ b/cs/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/community/packages/index.html b/cs/community/packages/index.html index f07e5b818186..1c4fba285001 100644 --- a/cs/community/packages/index.html +++ b/cs/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/compilers/index.html b/cs/compilers/index.html index 55bb5aa074b1..944313ac4410 100644 --- a/cs/compilers/index.html +++ b/cs/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/genindex/index.html b/cs/genindex/index.html index eae6205902b6..8c45e2d31ed3 100644 --- a/cs/genindex/index.html +++ b/cs/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/index.html b/cs/index.html index 462f27913f16..ab99c7af8a41 100644 --- a/cs/index.html +++ b/cs/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/allocatable_arrays/index.html b/cs/learn/best_practices/allocatable_arrays/index.html index cd9f6d3c3ca8..bebd5ea29a5e 100644 --- a/cs/learn/best_practices/allocatable_arrays/index.html +++ b/cs/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/arrays/index.html b/cs/learn/best_practices/arrays/index.html index 35ee0abf60f1..0d0ecc730fea 100644 --- a/cs/learn/best_practices/arrays/index.html +++ b/cs/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/callbacks/index.html b/cs/learn/best_practices/callbacks/index.html index 15a69da872c4..d866c62ea88b 100644 --- a/cs/learn/best_practices/callbacks/index.html +++ b/cs/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/element_operations/index.html b/cs/learn/best_practices/element_operations/index.html index d2850457b39c..547d526ca85c 100644 --- a/cs/learn/best_practices/element_operations/index.html +++ b/cs/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/file_io/index.html b/cs/learn/best_practices/file_io/index.html index 5b1eae63392f..5046588acc8d 100644 --- a/cs/learn/best_practices/file_io/index.html +++ b/cs/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/floating_point/index.html b/cs/learn/best_practices/floating_point/index.html index 81bb2691a424..8a45224c97f0 100644 --- a/cs/learn/best_practices/floating_point/index.html +++ b/cs/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/index.html b/cs/learn/best_practices/index.html index cc046b0e44f5..ead94a9e7bcc 100644 --- a/cs/learn/best_practices/index.html +++ b/cs/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/integer_division/index.html b/cs/learn/best_practices/integer_division/index.html index 60c3f34edc56..e55c271d4821 100644 --- a/cs/learn/best_practices/integer_division/index.html +++ b/cs/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/modules_programs/index.html b/cs/learn/best_practices/modules_programs/index.html index 7d8153c98288..995f5915bc70 100644 --- a/cs/learn/best_practices/modules_programs/index.html +++ b/cs/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/multidim_arrays/index.html b/cs/learn/best_practices/multidim_arrays/index.html index 04c26af8aaf8..fb1ca4cd9767 100644 --- a/cs/learn/best_practices/multidim_arrays/index.html +++ b/cs/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/style_guide/index.html b/cs/learn/best_practices/style_guide/index.html index 21b6b4e1a80a..7e3f0c9d7e3b 100644 --- a/cs/learn/best_practices/style_guide/index.html +++ b/cs/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/best_practices/type_casting/index.html b/cs/learn/best_practices/type_casting/index.html index 59585f90f4eb..460111349bea 100644 --- a/cs/learn/best_practices/type_casting/index.html +++ b/cs/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/build_tools/index.html b/cs/learn/building_programs/build_tools/index.html index 11243d7a1d1f..c5228c4540f9 100644 --- a/cs/learn/building_programs/build_tools/index.html +++ b/cs/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/compiling_source/index.html b/cs/learn/building_programs/compiling_source/index.html index 7e507412fbe0..4e3ef90568d7 100644 --- a/cs/learn/building_programs/compiling_source/index.html +++ b/cs/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/distributing/index.html b/cs/learn/building_programs/distributing/index.html index 30ef3b36efd7..1e46e3dade0b 100644 --- a/cs/learn/building_programs/distributing/index.html +++ b/cs/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/include_files/index.html b/cs/learn/building_programs/include_files/index.html index bf1118a7b85f..d16964339821 100644 --- a/cs/learn/building_programs/include_files/index.html +++ b/cs/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/index.html b/cs/learn/building_programs/index.html index 2fb651531a80..313883ecbc35 100644 --- a/cs/learn/building_programs/index.html +++ b/cs/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/linking_pieces/index.html b/cs/learn/building_programs/linking_pieces/index.html index 58286a42264b..8847bc332e87 100644 --- a/cs/learn/building_programs/linking_pieces/index.html +++ b/cs/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/managing_libraries/index.html b/cs/learn/building_programs/managing_libraries/index.html index ada72f558985..d2b3ed8c914e 100644 --- a/cs/learn/building_programs/managing_libraries/index.html +++ b/cs/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/project_make/index.html b/cs/learn/building_programs/project_make/index.html index a13d81b62640..bf0ace523fbe 100644 --- a/cs/learn/building_programs/project_make/index.html +++ b/cs/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/building_programs/runtime_libraries/index.html b/cs/learn/building_programs/runtime_libraries/index.html index 6906c3660394..20e727ab6293 100644 --- a/cs/learn/building_programs/runtime_libraries/index.html +++ b/cs/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/index.html b/cs/learn/index.html index e7778b939087..de16f11c16d5 100644 --- a/cs/learn/index.html +++ b/cs/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/array/index.html b/cs/learn/intrinsics/array/index.html index fc087b65939b..72e731428173 100644 --- a/cs/learn/intrinsics/array/index.html +++ b/cs/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/bit/index.html b/cs/learn/intrinsics/bit/index.html index de0ea6115d65..3dca4b1ecce4 100644 --- a/cs/learn/intrinsics/bit/index.html +++ b/cs/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/cfi/index.html b/cs/learn/intrinsics/cfi/index.html index fcf3794491a8..b781edfd7413 100644 --- a/cs/learn/intrinsics/cfi/index.html +++ b/cs/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/character/index.html b/cs/learn/intrinsics/character/index.html index 0aca4c6a64b5..0656bf05096c 100644 --- a/cs/learn/intrinsics/character/index.html +++ b/cs/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/compiler/index.html b/cs/learn/intrinsics/compiler/index.html index 0614d5dfe245..5f413eabe92f 100644 --- a/cs/learn/intrinsics/compiler/index.html +++ b/cs/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/index.html b/cs/learn/intrinsics/index.html index 8c5aea9c005e..8aa9d36a4398 100644 --- a/cs/learn/intrinsics/index.html +++ b/cs/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/math/index.html b/cs/learn/intrinsics/math/index.html index 24b41645a148..35e6e13d80da 100644 --- a/cs/learn/intrinsics/math/index.html +++ b/cs/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/model/index.html b/cs/learn/intrinsics/model/index.html index 3af2a12728ca..0c9a596fc219 100644 --- a/cs/learn/intrinsics/model/index.html +++ b/cs/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/numeric/index.html b/cs/learn/intrinsics/numeric/index.html index 8d9c30b5c4b6..f70ef8741fa6 100644 --- a/cs/learn/intrinsics/numeric/index.html +++ b/cs/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/parallel/index.html b/cs/learn/intrinsics/parallel/index.html index 4cf2bb228d23..cb3e61bfb5e6 100644 --- a/cs/learn/intrinsics/parallel/index.html +++ b/cs/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/state/index.html b/cs/learn/intrinsics/state/index.html index fe3e80759379..36a2deef399d 100644 --- a/cs/learn/intrinsics/state/index.html +++ b/cs/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/system/index.html b/cs/learn/intrinsics/system/index.html index 69d13e303cca..1c298b443413 100644 --- a/cs/learn/intrinsics/system/index.html +++ b/cs/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/transform/index.html b/cs/learn/intrinsics/transform/index.html index 1dc4f88d09bd..02a7eeb9d562 100644 --- a/cs/learn/intrinsics/transform/index.html +++ b/cs/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/intrinsics/type/index.html b/cs/learn/intrinsics/type/index.html index af4c4f826b31..4d46b89cbe4d 100644 --- a/cs/learn/intrinsics/type/index.html +++ b/cs/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/choose_compiler/index.html b/cs/learn/os_setup/choose_compiler/index.html index 862e5bc2fe75..e68d66796f09 100644 --- a/cs/learn/os_setup/choose_compiler/index.html +++ b/cs/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/ides/index.html b/cs/learn/os_setup/ides/index.html index bdb1298b1bc4..80056c4e4e82 100644 --- a/cs/learn/os_setup/ides/index.html +++ b/cs/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/index.html b/cs/learn/os_setup/index.html index 8f46d7ebca42..a9bf94cc290c 100644 --- a/cs/learn/os_setup/index.html +++ b/cs/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/install_gfortran/index.html b/cs/learn/os_setup/install_gfortran/index.html index b2a665ad4f85..8cf2034c4da2 100644 --- a/cs/learn/os_setup/install_gfortran/index.html +++ b/cs/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/text_editors/index.html b/cs/learn/os_setup/text_editors/index.html index 6a4747bf0536..e9400dbef6a1 100644 --- a/cs/learn/os_setup/text_editors/index.html +++ b/cs/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/os_setup/tips/index.html b/cs/learn/os_setup/tips/index.html index d66775c5f012..f34419896086 100644 --- a/cs/learn/os_setup/tips/index.html +++ b/cs/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/arrays_strings/index.html b/cs/learn/quickstart/arrays_strings/index.html index b6703c093954..c10a982ed9d8 100644 --- a/cs/learn/quickstart/arrays_strings/index.html +++ b/cs/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/derived_types/index.html b/cs/learn/quickstart/derived_types/index.html index 691fa27a939c..e8002b9736b7 100644 --- a/cs/learn/quickstart/derived_types/index.html +++ b/cs/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/hello_world/index.html b/cs/learn/quickstart/hello_world/index.html index f9ca924653d0..e814ac250836 100644 --- a/cs/learn/quickstart/hello_world/index.html +++ b/cs/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/index.html b/cs/learn/quickstart/index.html index cab2c3b20237..21b35a63a6f8 100644 --- a/cs/learn/quickstart/index.html +++ b/cs/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/operators_control_flow/index.html b/cs/learn/quickstart/operators_control_flow/index.html index a336ff16f5bf..425cb9169163 100644 --- a/cs/learn/quickstart/operators_control_flow/index.html +++ b/cs/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/organising_code/index.html b/cs/learn/quickstart/organising_code/index.html index 9a7b9f65b6f9..8f9ce99cbe2e 100644 --- a/cs/learn/quickstart/organising_code/index.html +++ b/cs/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/learn/quickstart/variables/index.html b/cs/learn/quickstart/variables/index.html index 6007cc545ade..6f727981585a 100644 --- a/cs/learn/quickstart/variables/index.html +++ b/cs/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2020/02-28-J3-february-meeting/index.html b/cs/news/2020/02-28-J3-february-meeting/index.html index 8506792666ce..1bb7edb9ce88 100644 --- a/cs/news/2020/02-28-J3-february-meeting/index.html +++ b/cs/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2020/04-06-Announcing-FortranCon-2020/index.html b/cs/news/2020/04-06-Announcing-FortranCon-2020/index.html index b3d681734237..93811746f021 100644 --- a/cs/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/cs/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2020/04-18-Fortran-Webinar/index.html b/cs/news/2020/04-18-Fortran-Webinar/index.html index 16533728b41e..24447f029dd9 100644 --- a/cs/news/2020/04-18-Fortran-Webinar/index.html +++ b/cs/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/cs/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 2ec8fd6bba55..1f9bdc92713b 100644 --- a/cs/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/cs/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/cs/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index a9aa0a1fe339..e45ded7b603b 100644 --- a/cs/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/cs/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/cs/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 13b1975610b8..39bcd58f7b0a 100644 --- a/cs/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/cs/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/cs/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/cs/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 19f7618a7167..cdcbc6ed7fb2 100644 --- a/cs/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/cs/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/cs/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index ad87b7e5d3ab..8f628a0c2bcb 100644 --- a/cs/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/cs/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -447,14 +450,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas diff --git a/cs/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/cs/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index d21c1653b606..cfe428063449 100644 --- a/cs/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/cs/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,35 +422,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas diff --git a/cs/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/cs/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 665464dbecc9..d983d5f7ef47 100644 --- a/cs/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/cs/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -461,7 +464,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/cs/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/cs/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index fb61aefc8481..32a3a5720611 100644 --- a/cs/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/cs/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -426,21 +429,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward diff --git a/cs/news/2020/index.html b/cs/news/2020/index.html index 2d59ad987ee7..c3b431f2b6e3 100644 --- a/cs/news/2020/index.html +++ b/cs/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -526,21 +529,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -600,42 +603,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -649,7 +652,7 @@

- Ondřej Čertík + Laurence Kedward @@ -716,35 +719,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -811,21 +814,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -839,14 +842,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -906,35 +909,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -994,21 +997,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -1068,21 +1071,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/cs/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 40baf2abe96a..29d1cb53421f 100644 --- a/cs/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/cs/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -433,21 +436,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward diff --git a/cs/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/cs/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index 48c421732477..e825c0caf379 100644 --- a/cs/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/cs/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward diff --git a/cs/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/cs/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index c43cf84e04f8..ef2a2969fc73 100644 --- a/cs/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/cs/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík diff --git a/cs/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/cs/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 85d568882961..532c34c3f197 100644 --- a/cs/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/cs/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward diff --git a/cs/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/cs/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index fa31799c88c2..65b9729323fb 100644 --- a/cs/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/cs/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward diff --git a/cs/news/2021/04-20-First-Year/index.html b/cs/news/2021/04-20-First-Year/index.html index d62519327ae1..66ad79e35bce 100644 --- a/cs/news/2021/04-20-First-Year/index.html +++ b/cs/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/cs/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index aee1c9376894..1112b217af9f 100644 --- a/cs/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/cs/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward diff --git a/cs/news/2021/05-18-Welcome-GSoC-students/index.html b/cs/news/2021/05-18-Welcome-GSoC-students/index.html index 99f0a8b846f3..d04983b670aa 100644 --- a/cs/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/cs/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward diff --git a/cs/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/cs/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 132c836f68d5..e5fa6eb4299a 100644 --- a/cs/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/cs/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík diff --git a/cs/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/cs/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index ae7e69ddc456..e38b9cccb412 100644 --- a/cs/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/cs/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -440,7 +443,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/cs/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/cs/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index a6bda9e50c41..83fb30eebd1f 100644 --- a/cs/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/cs/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/cs/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 998bee1d9479..1060575bca72 100644 --- a/cs/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/cs/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , diff --git a/cs/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/cs/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 29b88847c663..e79d9c114cda 100644 --- a/cs/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/cs/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík diff --git a/cs/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/cs/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 1524a5a47fe0..9daa5bdcab37 100644 --- a/cs/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/cs/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , diff --git a/cs/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/cs/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index e9088c23d186..eb615d22fcb3 100644 --- a/cs/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/cs/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert diff --git a/cs/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/cs/news/2021/12-29-Fortran-lang-2021-in-review/index.html index aa9cc135360c..60f3396d030b 100644 --- a/cs/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/cs/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/2021/index.html b/cs/news/2021/index.html index c6b8ad1e1ac1..a6aba37a2cf4 100644 --- a/cs/news/2021/index.html +++ b/cs/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -616,14 +619,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -690,14 +693,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -764,21 +767,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -845,14 +848,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -993,14 +996,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1021,7 +1024,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1081,28 +1084,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1162,42 +1165,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1259,35 +1262,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1434,35 +1437,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1522,56 +1525,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -1631,21 +1634,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1705,35 +1708,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -1793,14 +1796,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1814,21 +1817,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward diff --git a/cs/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/cs/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 708c072d1eb4..707ca86eb7b5 100644 --- a/cs/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/cs/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/cs/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index e3860f995b2d..645a5895028c 100644 --- a/cs/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/cs/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -440,7 +443,7 @@

- Milan Curcic + Jérémie Vandenplas diff --git a/cs/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/cs/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index fffad6da2398..8194c5cda63a 100644 --- a/cs/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/cs/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/cs/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index dd75864470e9..0c62698692d6 100644 --- a/cs/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/cs/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/cs/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index a09d59df8ec8..ad9050026ccb 100644 --- a/cs/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/cs/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , diff --git a/cs/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/cs/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index ff3d9b6061e0..9974addc7a57 100644 --- a/cs/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/cs/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , diff --git a/cs/news/2022/index.html b/cs/news/2022/index.html index d9512474f7d0..1fa6b3b0832d 100644 --- a/cs/news/2022/index.html +++ b/cs/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -593,21 +596,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -822,7 +825,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -843,7 +846,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -910,28 +913,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/archive/index.html b/cs/news/archive/index.html index c9f8d5af939b..1e9d674d9459 100644 --- a/cs/news/archive/index.html +++ b/cs/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/atom.xml b/cs/news/atom.xml index 30606b312bf1..e7ae49e83ddd 100644 --- a/cs/news/atom.xml +++ b/cs/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:09:13.963386+00:00 + 2023-05-22T09:14:26.803950+00:00 ABlog @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Ondřej Čertík + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Ondřej Čertík + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Milan Curcic + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -211,7 +211,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Ondřej Čertík + Marshall Ward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Gary Klimowicz + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Gary Klimowicz + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Gary Klimowicz + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Gary Klimowicz + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Ondřej Čertík + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - Laurence Kedward + and Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/cs/news/author/alexis-perry-holby/index.html b/cs/news/author/alexis-perry-holby/index.html index 4ea9a91b2f85..33aa8a8fb705 100644 --- a/cs/news/author/alexis-perry-holby/index.html +++ b/cs/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -593,21 +596,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -822,7 +825,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -843,7 +846,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -910,28 +913,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -999,14 +1002,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -1073,14 +1076,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1147,21 +1150,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1228,14 +1231,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1302,35 +1305,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1390,35 +1393,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1478,35 +1481,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward diff --git a/cs/news/author/and-jeremie-vandenplas/index.html b/cs/news/author/and-jeremie-vandenplas/index.html index 5e45fe93d833..14fcc26c1a35 100644 --- a/cs/news/author/and-jeremie-vandenplas/index.html +++ b/cs/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/cs/news/author/and-laurence-kedward/index.html b/cs/news/author/and-laurence-kedward/index.html index 7787a043efe1..6495a5e969bb 100644 --- a/cs/news/author/and-laurence-kedward/index.html +++ b/cs/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,35 +522,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -614,21 +617,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -642,14 +645,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas diff --git a/cs/news/author/arjen-markus-and-gary-klimowicz/index.html b/cs/news/author/arjen-markus-and-gary-klimowicz/index.html index 9332923ac449..6d90c4f468af 100644 --- a/cs/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/cs/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/author/arjen-markus/index.html b/cs/news/author/arjen-markus/index.html index 87843ab55a45..5b6531b268ea 100644 --- a/cs/news/author/arjen-markus/index.html +++ b/cs/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -609,56 +612,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward diff --git a/cs/news/author/brad-richardson/index.html b/cs/news/author/brad-richardson/index.html index 83b4ea491561..b00673608888 100644 --- a/cs/news/author/brad-richardson/index.html +++ b/cs/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -696,56 +699,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -805,42 +808,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -854,7 +857,7 @@

- Ondřej Čertík + Laurence Kedward @@ -921,35 +924,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -1016,21 +1019,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -1044,14 +1047,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -1111,21 +1114,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/news/author/damian-rouson/index.html b/cs/news/author/damian-rouson/index.html index 6db8fe7cd414..4ddd2f6973f0 100644 --- a/cs/news/author/damian-rouson/index.html +++ b/cs/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward diff --git a/cs/news/author/gagandeep-singh/index.html b/cs/news/author/gagandeep-singh/index.html index 327caae333ab..bdde09aef931 100644 --- a/cs/news/author/gagandeep-singh/index.html +++ b/cs/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -600,7 +603,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -621,7 +624,7 @@

- Milan Curcic + Jérémie Vandenplas diff --git a/cs/news/author/gary-klimowicz/index.html b/cs/news/author/gary-klimowicz/index.html index a9d6a7f4dfa8..ff103350ec46 100644 --- a/cs/news/author/gary-klimowicz/index.html +++ b/cs/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -533,21 +536,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -608,7 +611,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -622,21 +625,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -696,42 +699,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -745,7 +748,7 @@

- Ondřej Čertík + Laurence Kedward @@ -812,35 +815,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -907,21 +910,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -935,14 +938,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas diff --git a/cs/news/author/giannis-nikiteas/index.html b/cs/news/author/giannis-nikiteas/index.html index b7be00585c92..aac70bcd305d 100644 --- a/cs/news/author/giannis-nikiteas/index.html +++ b/cs/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , diff --git a/cs/news/author/henil-panchal/index.html b/cs/news/author/henil-panchal/index.html index 1a91f796f902..4f158113fbee 100644 --- a/cs/news/author/henil-panchal/index.html +++ b/cs/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , diff --git a/cs/news/author/index.html b/cs/news/author/index.html index 3bf5abbd0435..faaf88641a6b 100644 --- a/cs/news/author/index.html +++ b/cs/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/author/ivan-pribec/index.html b/cs/news/author/ivan-pribec/index.html index 87bc463b4953..558c0cf231d5 100644 --- a/cs/news/author/ivan-pribec/index.html +++ b/cs/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -561,7 +564,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/cs/news/author/jeremie-vandenplas/index.html b/cs/news/author/jeremie-vandenplas/index.html index 467cc98a52fa..fe58e12c883f 100644 --- a/cs/news/author/jeremie-vandenplas/index.html +++ b/cs/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -540,7 +543,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -607,28 +610,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -689,35 +692,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -786,35 +789,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -874,14 +877,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -895,21 +898,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -970,7 +973,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -984,21 +987,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -1065,35 +1068,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -1160,21 +1163,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -1188,14 +1191,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -1255,35 +1258,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/author/laurence-kedward/index.html b/cs/news/author/laurence-kedward/index.html index b0dafee11c82..579ba0029529 100644 --- a/cs/news/author/laurence-kedward/index.html +++ b/cs/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -609,21 +612,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -757,14 +760,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -785,7 +788,7 @@

- Ondřej Čertík + Laurence Kedward @@ -845,28 +848,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -926,42 +929,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1023,35 +1026,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1198,35 +1201,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1286,56 +1289,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -1395,21 +1398,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1469,35 +1472,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -1557,14 +1560,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1578,21 +1581,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -1653,7 +1656,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1667,21 +1670,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -1741,42 +1744,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -1790,7 +1793,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1850,35 +1853,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -1938,21 +1941,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/cs/news/author/marshall-ward/index.html b/cs/news/author/marshall-ward/index.html index d69159091b72..606b4c2413e4 100644 --- a/cs/news/author/marshall-ward/index.html +++ b/cs/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward diff --git a/cs/news/author/milan-curcic-and-ondrej-certik/index.html b/cs/news/author/milan-curcic-and-ondrej-certik/index.html index 4dfc44001d2b..591fad2df9c2 100644 --- a/cs/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/cs/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/news/author/milan-curcic/index.html b/cs/news/author/milan-curcic/index.html index d7c9d6d31f14..54d31848a2e7 100644 --- a/cs/news/author/milan-curcic/index.html +++ b/cs/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -593,21 +596,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -822,7 +825,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -843,7 +846,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -910,28 +913,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -1096,14 +1099,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -1170,14 +1173,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1251,14 +1254,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1399,14 +1402,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1427,7 +1430,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1487,28 +1490,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1568,42 +1571,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1665,35 +1668,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1840,35 +1843,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1928,56 +1931,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -2037,21 +2040,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2111,35 +2114,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -2199,14 +2202,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -2220,21 +2223,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2295,7 +2298,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2309,21 +2312,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2383,42 +2386,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -2432,7 +2435,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2499,35 +2502,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2594,21 +2597,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -2622,14 +2625,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2689,35 +2692,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -2777,21 +2780,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/cs/news/author/ondrej-certik-and-zach-jibben/index.html b/cs/news/author/ondrej-certik-and-zach-jibben/index.html index 4cbf9b8dab7c..80c680d29468 100644 --- a/cs/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/cs/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/author/ondrej-certik/index.html b/cs/news/author/ondrej-certik/index.html index 9c64e2ff70e4..46ceb0d5f58f 100644 --- a/cs/news/author/ondrej-certik/index.html +++ b/cs/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -674,28 +677,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -756,35 +759,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -860,14 +863,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -934,21 +937,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1015,14 +1018,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1163,14 +1166,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1191,7 +1194,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1251,28 +1254,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1332,42 +1335,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1429,35 +1432,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1604,35 +1607,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1692,56 +1695,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -1801,21 +1804,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1875,14 +1878,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1896,21 +1899,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -1971,7 +1974,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1985,21 +1988,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2059,42 +2062,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -2108,7 +2111,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2175,35 +2178,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2270,21 +2273,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -2298,14 +2301,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2365,35 +2368,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas diff --git a/cs/news/author/sebastian-ehlert/index.html b/cs/news/author/sebastian-ehlert/index.html index 28e088aba69c..ce6142411bb2 100644 --- a/cs/news/author/sebastian-ehlert/index.html +++ b/cs/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -540,7 +543,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -607,28 +610,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -689,35 +692,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -793,14 +796,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -867,14 +870,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -948,14 +951,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1022,14 +1025,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1050,7 +1053,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1110,28 +1113,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1191,42 +1194,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1288,35 +1291,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1376,35 +1379,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1464,56 +1467,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -1573,35 +1576,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -1661,14 +1664,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1682,21 +1685,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -1757,42 +1760,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -1806,7 +1809,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/cs/news/author/thomas-konig/index.html b/cs/news/author/thomas-konig/index.html index 37f02aa84054..4e40bbe454bd 100644 --- a/cs/news/author/thomas-konig/index.html +++ b/cs/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -547,14 +550,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas diff --git a/cs/news/author/zachary-moon/index.html b/cs/news/author/zachary-moon/index.html index 7aef11f86188..876600b4e1a2 100644 --- a/cs/news/author/zachary-moon/index.html +++ b/cs/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -540,7 +543,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/cs/news/category/index.html b/cs/news/category/index.html index 437a5a94880f..26f082681389 100644 --- a/cs/news/category/index.html +++ b/cs/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/category/newsletter/index.html b/cs/news/category/newsletter/index.html index f1cf9f584c67..b42cd4fa9882 100644 --- a/cs/news/category/newsletter/index.html +++ b/cs/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -593,21 +596,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -822,7 +825,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -843,7 +846,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -910,28 +913,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -1096,14 +1099,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -1170,14 +1173,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1244,21 +1247,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1325,14 +1328,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1473,14 +1476,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1501,7 +1504,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1561,28 +1564,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1642,42 +1645,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1739,35 +1742,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1914,35 +1917,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -2002,56 +2005,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -2111,21 +2114,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2185,35 +2188,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -2273,14 +2276,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -2294,21 +2297,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2369,7 +2372,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2383,21 +2386,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2457,42 +2460,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -2506,7 +2509,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2573,35 +2576,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2668,21 +2671,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -2696,14 +2699,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2763,35 +2766,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/news/drafts/index.html b/cs/news/drafts/index.html index 735002b57222..dcbf15de26be 100644 --- a/cs/news/drafts/index.html +++ b/cs/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/news/index.html b/cs/news/index.html index 18e245c84546..3fead884ede2 100644 --- a/cs/news/index.html +++ b/cs/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Henil Panchal + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , @@ -593,21 +596,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Gagandeep Singh , @@ -822,7 +825,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -843,7 +846,7 @@

- Milan Curcic + Jérémie Vandenplas @@ -910,28 +913,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -1096,14 +1099,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert @@ -1170,14 +1173,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1244,21 +1247,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1325,14 +1328,14 @@

- Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , @@ -1473,14 +1476,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1501,7 +1504,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1561,28 +1564,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1642,42 +1645,42 @@

- Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Milan Curcic + Arjen Markus , - Ondřej Čertík + Laurence Kedward @@ -1739,35 +1742,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1914,35 +1917,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Milan Curcic + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -2002,56 +2005,56 @@

- Marshall Ward + Damian Rouson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Arjen Markus + Brad Richardson , - Damian Rouson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Marshall Ward @@ -2111,21 +2114,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2185,35 +2188,35 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , - Milan Curcic + Laurence Kedward @@ -2273,14 +2276,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -2294,21 +2297,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2369,7 +2372,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2383,21 +2386,21 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Laurence Kedward @@ -2457,42 +2460,42 @@

- Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Milan Curcic , - Sebastian Ehlert + Brad Richardson , - Milan Curcic + Gary Klimowicz , @@ -2506,7 +2509,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2573,35 +2576,35 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , - Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2668,21 +2671,21 @@

- Brad Richardson + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Ondřej Čertík + Milan Curcic , @@ -2696,14 +2699,14 @@

- Milan Curcic + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas @@ -2763,35 +2766,35 @@

- Laurence Kedward + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Brad Richardson + Jeremie Vandenplas , - Milan Curcic and Ondřej Čertík + Brad Richardson , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/cs/packages/data-types/index.html b/cs/packages/data-types/index.html index 3e10376be8d7..3885e2cf3f7b 100644 --- a/cs/packages/data-types/index.html +++ b/cs/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/examples/index.html b/cs/packages/examples/index.html index 1c16393ea548..a8d017d21d90 100644 --- a/cs/packages/examples/index.html +++ b/cs/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/graphics/index.html b/cs/packages/graphics/index.html index 4dbed7da8a5c..e337247bb580 100644 --- a/cs/packages/graphics/index.html +++ b/cs/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/index.html b/cs/packages/index.html index 265bc031c00c..a7bf5ba3f02b 100644 --- a/cs/packages/index.html +++ b/cs/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/interfaces/index.html b/cs/packages/interfaces/index.html index 3869b8242702..da63359ab4ec 100644 --- a/cs/packages/interfaces/index.html +++ b/cs/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/io/index.html b/cs/packages/io/index.html index e526cbc2cc32..b7ba4284cd6f 100644 --- a/cs/packages/io/index.html +++ b/cs/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/libraries/index.html b/cs/packages/libraries/index.html index 02171ba38ab0..6a85af3349ff 100644 --- a/cs/packages/libraries/index.html +++ b/cs/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/numerical/index.html b/cs/packages/numerical/index.html index 34877bb2d557..27a950475eff 100644 --- a/cs/packages/numerical/index.html +++ b/cs/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/programming/index.html b/cs/packages/programming/index.html index c250245b870a..6c2055bb7b84 100644 --- a/cs/packages/programming/index.html +++ b/cs/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/scientific/index.html b/cs/packages/scientific/index.html index 99712f5d7548..eeb16eece851 100644 --- a/cs/packages/scientific/index.html +++ b/cs/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/packages/strings/index.html b/cs/packages/strings/index.html index 60b695ea34bb..293cf706ab21 100644 --- a/cs/packages/strings/index.html +++ b/cs/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/roadmap/index.html b/cs/roadmap/index.html index 92c52cbbe2e9..36dde22aeeed 100644 --- a/cs/roadmap/index.html +++ b/cs/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/cs/search/index.html b/cs/search/index.html index fb078bc5ac64..a34de4800e2b 100644 --- a/cs/search/index.html +++ b/cs/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/.doctrees/community.doctree b/de/.doctrees/community.doctree index f8fc3e3f2ddc..f47f9a51b860 100644 Binary files a/de/.doctrees/community.doctree and b/de/.doctrees/community.doctree differ diff --git a/de/.doctrees/community/contributing.doctree b/de/.doctrees/community/contributing.doctree index f6b6198fee24..2661324480b2 100644 Binary files a/de/.doctrees/community/contributing.doctree and b/de/.doctrees/community/contributing.doctree differ diff --git a/de/.doctrees/community/minibooks.doctree b/de/.doctrees/community/minibooks.doctree index b633dd2774d8..23ef2d29ffd1 100644 Binary files a/de/.doctrees/community/minibooks.doctree and b/de/.doctrees/community/minibooks.doctree differ diff --git a/de/.doctrees/environment.pickle b/de/.doctrees/environment.pickle index 32acc40a94a6..85fdb64dc327 100644 Binary files a/de/.doctrees/environment.pickle and b/de/.doctrees/environment.pickle differ diff --git a/de/.doctrees/index.doctree b/de/.doctrees/index.doctree index c9a75b2a1f20..b0179ae830e6 100644 Binary files a/de/.doctrees/index.doctree and b/de/.doctrees/index.doctree differ diff --git a/de/.doctrees/learn.doctree b/de/.doctrees/learn.doctree index 8a0dd5862310..723a63610911 100644 Binary files a/de/.doctrees/learn.doctree and b/de/.doctrees/learn.doctree differ diff --git a/de/.doctrees/learn/intrinsics/state.doctree b/de/.doctrees/learn/intrinsics/state.doctree index 5b1f626ba397..f18545ce81e7 100644 Binary files a/de/.doctrees/learn/intrinsics/state.doctree and b/de/.doctrees/learn/intrinsics/state.doctree differ diff --git a/de/.doctrees/learn/os_setup/index.doctree b/de/.doctrees/learn/os_setup/index.doctree index c709bfb6731e..8e6ed1a9f6e7 100644 Binary files a/de/.doctrees/learn/os_setup/index.doctree and b/de/.doctrees/learn/os_setup/index.doctree differ diff --git a/de/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree b/de/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree index d0b5ce939322..5182ec138c43 100644 Binary files a/de/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree and b/de/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree differ diff --git a/de/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree b/de/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree index cc5afbf39e8c..b50b57b223bb 100644 Binary files a/de/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree and b/de/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree differ diff --git a/de/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree b/de/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree index c57f217a13be..8e0071eead43 100644 Binary files a/de/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree and b/de/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree differ diff --git a/de/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree b/de/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree index 0242f9c4b6c1..1c5cd742d18d 100644 Binary files a/de/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree and b/de/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree differ diff --git a/de/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree b/de/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree index e5b5d326673a..fe6acee89eb6 100644 Binary files a/de/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree and b/de/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree differ diff --git a/de/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree b/de/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree index 1cd147f1fb81..98613e8ae13c 100644 Binary files a/de/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree and b/de/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree differ diff --git a/de/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree b/de/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree index c2ac29325f1a..00205352c3c8 100644 Binary files a/de/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree and b/de/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree differ diff --git a/de/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree b/de/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree index 67e5e179d80d..de093a662b8e 100644 Binary files a/de/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree and b/de/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree differ diff --git a/de/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree b/de/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree index 10161cd85635..7d1ff8e52b20 100644 Binary files a/de/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree and b/de/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree differ diff --git a/de/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree b/de/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree index 593bda01a439..abfe8a0e6a69 100644 Binary files a/de/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree and b/de/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree differ diff --git a/de/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree b/de/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree index ae361f30b167..3d15c16ddf2c 100644 Binary files a/de/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree and b/de/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree differ diff --git a/de/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree b/de/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree index 7175bda176ba..e5729b75fbf4 100644 Binary files a/de/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree and b/de/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree differ diff --git a/de/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree b/de/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree index dc1c9aee480c..184478a50c56 100644 Binary files a/de/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree and b/de/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree differ diff --git a/de/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree b/de/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree index 48b5955be559..8872e13835a2 100644 Binary files a/de/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree and b/de/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree differ diff --git a/de/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree b/de/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree index 873c3920796d..fd88404d6884 100644 Binary files a/de/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree and b/de/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree differ diff --git a/de/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree b/de/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree index 7776c3094f9c..41ba41610bd7 100644 Binary files a/de/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree and b/de/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree differ diff --git a/de/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree b/de/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree index e8a35991467d..2dfbf38a959f 100644 Binary files a/de/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree and b/de/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree differ diff --git a/de/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree b/de/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree index d65ddf465942..96063d0fdd07 100644 Binary files a/de/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree and b/de/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree differ diff --git a/de/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree b/de/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree index 7288cf2b4e9e..c8d0bf1b5b64 100644 Binary files a/de/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree and b/de/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree differ diff --git a/de/community/contributing/index.html b/de/community/contributing/index.html index 6b48fa97ba98..09fe7d193294 100644 --- a/de/community/contributing/index.html +++ b/de/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/community/history/index.html b/de/community/history/index.html index 0bcc6dc04c87..967ce2184e09 100644 --- a/de/community/history/index.html +++ b/de/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/community/index.html b/de/community/index.html index 1effdc9b30dc..e190fb25a8c9 100644 --- a/de/community/index.html +++ b/de/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/community/minibooks/index.html b/de/community/minibooks/index.html index 8b5f9aba69e7..1a344c668e0c 100644 --- a/de/community/minibooks/index.html +++ b/de/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/community/packages/index.html b/de/community/packages/index.html index 0dab4d3a0140..4806ba8bb885 100644 --- a/de/community/packages/index.html +++ b/de/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/compilers/index.html b/de/compilers/index.html index 46acba169409..4bcc1fafd8fa 100644 --- a/de/compilers/index.html +++ b/de/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/genindex/index.html b/de/genindex/index.html index 4ae6a2195e7a..8b3617508c22 100644 --- a/de/genindex/index.html +++ b/de/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/index.html b/de/index.html index f06535d36ee0..e37cf9f4921d 100644 --- a/de/index.html +++ b/de/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/allocatable_arrays/index.html b/de/learn/best_practices/allocatable_arrays/index.html index 92c2240e5fbb..1e1fe6ae84b0 100644 --- a/de/learn/best_practices/allocatable_arrays/index.html +++ b/de/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/arrays/index.html b/de/learn/best_practices/arrays/index.html index 0b726a3a56b7..7876dd214a4e 100644 --- a/de/learn/best_practices/arrays/index.html +++ b/de/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/callbacks/index.html b/de/learn/best_practices/callbacks/index.html index 2c880e4946e0..4e03d10a1602 100644 --- a/de/learn/best_practices/callbacks/index.html +++ b/de/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/element_operations/index.html b/de/learn/best_practices/element_operations/index.html index e135e2510e5e..05ad85ea76e1 100644 --- a/de/learn/best_practices/element_operations/index.html +++ b/de/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/file_io/index.html b/de/learn/best_practices/file_io/index.html index 91bf7a27e81e..0be1a45accf6 100644 --- a/de/learn/best_practices/file_io/index.html +++ b/de/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/floating_point/index.html b/de/learn/best_practices/floating_point/index.html index 4e4c6e8360bd..c887337df48a 100644 --- a/de/learn/best_practices/floating_point/index.html +++ b/de/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/index.html b/de/learn/best_practices/index.html index 7da70bf56743..27bae83094fb 100644 --- a/de/learn/best_practices/index.html +++ b/de/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/integer_division/index.html b/de/learn/best_practices/integer_division/index.html index de7d1ba01b6c..549c7c142ad5 100644 --- a/de/learn/best_practices/integer_division/index.html +++ b/de/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/modules_programs/index.html b/de/learn/best_practices/modules_programs/index.html index f17e94082710..4c1b2c06d93f 100644 --- a/de/learn/best_practices/modules_programs/index.html +++ b/de/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/multidim_arrays/index.html b/de/learn/best_practices/multidim_arrays/index.html index 6c48b0118c41..a035be9f3316 100644 --- a/de/learn/best_practices/multidim_arrays/index.html +++ b/de/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/style_guide/index.html b/de/learn/best_practices/style_guide/index.html index 7b0e511e40ab..b3e31134d80a 100644 --- a/de/learn/best_practices/style_guide/index.html +++ b/de/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/best_practices/type_casting/index.html b/de/learn/best_practices/type_casting/index.html index e4555bee3b98..e036c6573168 100644 --- a/de/learn/best_practices/type_casting/index.html +++ b/de/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/build_tools/index.html b/de/learn/building_programs/build_tools/index.html index 611036db2516..5a9fc693c0a1 100644 --- a/de/learn/building_programs/build_tools/index.html +++ b/de/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/compiling_source/index.html b/de/learn/building_programs/compiling_source/index.html index 06d0af05155d..420b3556a33a 100644 --- a/de/learn/building_programs/compiling_source/index.html +++ b/de/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/distributing/index.html b/de/learn/building_programs/distributing/index.html index bd7282edbd86..91a1fbd9402c 100644 --- a/de/learn/building_programs/distributing/index.html +++ b/de/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/include_files/index.html b/de/learn/building_programs/include_files/index.html index 923a0fffc4ab..137e2898cbc2 100644 --- a/de/learn/building_programs/include_files/index.html +++ b/de/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/index.html b/de/learn/building_programs/index.html index c013ee866ff6..69b154fd67c5 100644 --- a/de/learn/building_programs/index.html +++ b/de/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/linking_pieces/index.html b/de/learn/building_programs/linking_pieces/index.html index e532850bb00d..e798787a1f64 100644 --- a/de/learn/building_programs/linking_pieces/index.html +++ b/de/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/managing_libraries/index.html b/de/learn/building_programs/managing_libraries/index.html index 38ce085feb8b..f7ffafc6ea1e 100644 --- a/de/learn/building_programs/managing_libraries/index.html +++ b/de/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/project_make/index.html b/de/learn/building_programs/project_make/index.html index b5c58c8e7afc..f303175cc472 100644 --- a/de/learn/building_programs/project_make/index.html +++ b/de/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/building_programs/runtime_libraries/index.html b/de/learn/building_programs/runtime_libraries/index.html index 5b84d4f892fe..a5aeb6f9fa2f 100644 --- a/de/learn/building_programs/runtime_libraries/index.html +++ b/de/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/index.html b/de/learn/index.html index b433a342bc29..09db7501d344 100644 --- a/de/learn/index.html +++ b/de/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/array/index.html b/de/learn/intrinsics/array/index.html index 4c0440931fd6..f25bd9001030 100644 --- a/de/learn/intrinsics/array/index.html +++ b/de/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/bit/index.html b/de/learn/intrinsics/bit/index.html index cd7d2f3521cc..e158b07e09e0 100644 --- a/de/learn/intrinsics/bit/index.html +++ b/de/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/cfi/index.html b/de/learn/intrinsics/cfi/index.html index 96dfada504ef..6cdaa4cfc120 100644 --- a/de/learn/intrinsics/cfi/index.html +++ b/de/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/character/index.html b/de/learn/intrinsics/character/index.html index 8ed402133b09..7dc83712eed9 100644 --- a/de/learn/intrinsics/character/index.html +++ b/de/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/compiler/index.html b/de/learn/intrinsics/compiler/index.html index e8252ab76a40..b1f393a1e94c 100644 --- a/de/learn/intrinsics/compiler/index.html +++ b/de/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/index.html b/de/learn/intrinsics/index.html index ba9570a1408b..c8f062487445 100644 --- a/de/learn/intrinsics/index.html +++ b/de/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/math/index.html b/de/learn/intrinsics/math/index.html index 7e7ec9b253f1..f03eb260e28c 100644 --- a/de/learn/intrinsics/math/index.html +++ b/de/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/model/index.html b/de/learn/intrinsics/model/index.html index fefc2e0abda6..e0e1be4e599c 100644 --- a/de/learn/intrinsics/model/index.html +++ b/de/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/numeric/index.html b/de/learn/intrinsics/numeric/index.html index 23fcb748c98c..f67ca3b96420 100644 --- a/de/learn/intrinsics/numeric/index.html +++ b/de/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/parallel/index.html b/de/learn/intrinsics/parallel/index.html index 090fd50d8dad..52d8a2d639a8 100644 --- a/de/learn/intrinsics/parallel/index.html +++ b/de/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/state/index.html b/de/learn/intrinsics/state/index.html index c7d38762ccef..2ea5701a7773 100644 --- a/de/learn/intrinsics/state/index.html +++ b/de/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/system/index.html b/de/learn/intrinsics/system/index.html index 029d4b71f82a..1933f793b16b 100644 --- a/de/learn/intrinsics/system/index.html +++ b/de/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/transform/index.html b/de/learn/intrinsics/transform/index.html index a9b109ccd6c8..aeed49519d34 100644 --- a/de/learn/intrinsics/transform/index.html +++ b/de/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/intrinsics/type/index.html b/de/learn/intrinsics/type/index.html index 0793dfa76988..f31f9fe261e3 100644 --- a/de/learn/intrinsics/type/index.html +++ b/de/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/choose_compiler/index.html b/de/learn/os_setup/choose_compiler/index.html index 3413ce691eac..64f01696cbb4 100644 --- a/de/learn/os_setup/choose_compiler/index.html +++ b/de/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/ides/index.html b/de/learn/os_setup/ides/index.html index a6abe54f1c67..a199486360f1 100644 --- a/de/learn/os_setup/ides/index.html +++ b/de/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/index.html b/de/learn/os_setup/index.html index 30567699a4c6..22665fe1460a 100644 --- a/de/learn/os_setup/index.html +++ b/de/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/install_gfortran/index.html b/de/learn/os_setup/install_gfortran/index.html index 6b4bc54e9d3b..92295ef07bcc 100644 --- a/de/learn/os_setup/install_gfortran/index.html +++ b/de/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/text_editors/index.html b/de/learn/os_setup/text_editors/index.html index 3e19fde45ec9..63fc258b1ce5 100644 --- a/de/learn/os_setup/text_editors/index.html +++ b/de/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/os_setup/tips/index.html b/de/learn/os_setup/tips/index.html index 39017bdcdd72..d0166ae67e7f 100644 --- a/de/learn/os_setup/tips/index.html +++ b/de/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/arrays_strings/index.html b/de/learn/quickstart/arrays_strings/index.html index 2929a0b375b7..241bab8573b9 100644 --- a/de/learn/quickstart/arrays_strings/index.html +++ b/de/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/derived_types/index.html b/de/learn/quickstart/derived_types/index.html index 970ec3e98813..e9ee30adf260 100644 --- a/de/learn/quickstart/derived_types/index.html +++ b/de/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/hello_world/index.html b/de/learn/quickstart/hello_world/index.html index d566eb8082fb..1c72c874fd9c 100644 --- a/de/learn/quickstart/hello_world/index.html +++ b/de/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/index.html b/de/learn/quickstart/index.html index e2843a8f13d1..039308d4d0e5 100644 --- a/de/learn/quickstart/index.html +++ b/de/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/operators_control_flow/index.html b/de/learn/quickstart/operators_control_flow/index.html index 6bfad6ea1520..aa269681d77b 100644 --- a/de/learn/quickstart/operators_control_flow/index.html +++ b/de/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/organising_code/index.html b/de/learn/quickstart/organising_code/index.html index df8990eaff0d..1952ba15b00b 100644 --- a/de/learn/quickstart/organising_code/index.html +++ b/de/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/learn/quickstart/variables/index.html b/de/learn/quickstart/variables/index.html index 7ea2fd5f8a6c..627e4cd0b3f3 100644 --- a/de/learn/quickstart/variables/index.html +++ b/de/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2020/02-28-J3-february-meeting/index.html b/de/news/2020/02-28-J3-february-meeting/index.html index aa83f5cd5a26..78130f5e0b91 100644 --- a/de/news/2020/02-28-J3-february-meeting/index.html +++ b/de/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2020/04-06-Announcing-FortranCon-2020/index.html b/de/news/2020/04-06-Announcing-FortranCon-2020/index.html index 5058e25aa433..ce7584b4be7f 100644 --- a/de/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/de/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2020/04-18-Fortran-Webinar/index.html b/de/news/2020/04-18-Fortran-Webinar/index.html index 854a2ecdee54..5178b11987e5 100644 --- a/de/news/2020/04-18-Fortran-Webinar/index.html +++ b/de/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/de/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 27ce01d63f47..f89b7b3d423e 100644 --- a/de/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/de/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/de/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 8c9c51aa1b5c..b14b3781104d 100644 --- a/de/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/de/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/de/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index f309cb14ed80..bd099b5b8c82 100644 --- a/de/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/de/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/de/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/de/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 0a62bd5d5778..ae14d35fd05f 100644 --- a/de/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/de/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/de/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index d93c70b42fa3..dd90d842c68f 100644 --- a/de/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/de/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -447,14 +450,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz diff --git a/de/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/de/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index f7d41f81546f..a5c243f328f0 100644 --- a/de/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/de/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -426,7 +429,7 @@

- Gary Klimowicz + Brad Richardson , @@ -440,14 +443,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz diff --git a/de/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/de/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 1913a8dddfc8..80c850a371d6 100644 --- a/de/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/de/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -426,42 +429,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward diff --git a/de/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/de/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index 3b6f45948d6d..e0ddca9b2693 100644 --- a/de/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/de/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -433,14 +436,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2020/index.html b/de/news/2020/index.html index 19c5905ad072..893279012d59 100644 --- a/de/news/2020/index.html +++ b/de/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -533,14 +536,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -600,7 +603,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -614,42 +617,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -709,7 +712,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -723,7 +726,7 @@

- Gary Klimowicz + Brad Richardson , @@ -737,14 +740,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -804,28 +807,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -839,14 +842,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -906,35 +909,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -994,21 +997,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -1068,21 +1071,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/de/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 6af7ec1818b6..a61befe8c013 100644 --- a/de/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/de/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -426,7 +429,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -440,14 +443,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/de/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index e484425be7b3..d99b5a94e4ea 100644 --- a/de/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/de/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , diff --git a/de/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/de/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 7c2ea6bc72e4..30127c38df1e 100644 --- a/de/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/de/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/de/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/de/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 6bb2e0501494..4ca9aa3fa9dd 100644 --- a/de/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/de/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -461,7 +464,7 @@

- Damian Rouson + Laurence Kedward diff --git a/de/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/de/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index 32fa24da09ad..b7ebb9d8bc68 100644 --- a/de/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/de/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2021/04-20-First-Year/index.html b/de/news/2021/04-20-First-Year/index.html index 31961bfe779d..150114ddfd59 100644 --- a/de/news/2021/04-20-First-Year/index.html +++ b/de/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/de/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/de/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 8a05486acb1b..afd5e13cc887 100644 --- a/de/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/de/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2021/05-18-Welcome-GSoC-students/index.html b/de/news/2021/05-18-Welcome-GSoC-students/index.html index 5c63dffbd6ec..d7ada394c624 100644 --- a/de/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/de/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward diff --git a/de/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/de/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 04e1ac07f180..9bd29f4ca6d7 100644 --- a/de/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/de/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/de/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/de/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 4e50e7e282a6..0f7198a030d9 100644 --- a/de/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/de/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -433,14 +436,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/de/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index db55381878d3..c53d6f4cb5d4 100644 --- a/de/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/de/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/de/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/de/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 86047a97b067..e3e611a15dfc 100644 --- a/de/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/de/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/de/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/de/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index c2cb9d409486..a8b4f61c4ce9 100644 --- a/de/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/de/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/de/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 40f47c51050e..5b96eb22af41 100644 --- a/de/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/de/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/de/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 97ae96e60c52..eb553dfb2e44 100644 --- a/de/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/de/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic diff --git a/de/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/de/news/2021/12-29-Fortran-lang-2021-in-review/index.html index b43b8c0a019a..115925daa90b 100644 --- a/de/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/de/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -426,21 +429,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2021/index.html b/de/news/2021/index.html index a358bf5fda52..06e59f56d46c 100644 --- a/de/news/2021/index.html +++ b/de/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -526,21 +529,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -616,14 +619,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -845,7 +848,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -859,7 +862,7 @@

- Sebastian Ehlert + Milan Curcic @@ -919,14 +922,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -993,14 +996,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1014,14 +1017,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1081,14 +1084,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1162,42 +1165,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1259,35 +1262,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1347,14 +1350,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1434,35 +1437,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1522,42 +1525,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -1571,7 +1574,7 @@

- Damian Rouson + Laurence Kedward @@ -1631,14 +1634,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1705,28 +1708,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -1793,7 +1796,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1807,7 +1810,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -1821,14 +1824,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/de/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index e65571080439..07e8176dfefa 100644 --- a/de/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/de/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -440,7 +443,7 @@

- Ondřej Čertík + Alexis Perry-Holby diff --git a/de/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/de/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index e259561846a6..338f6507cbc2 100644 --- a/de/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/de/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -426,21 +429,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh diff --git a/de/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/de/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 1297b7275836..010ec30db8bc 100644 --- a/de/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/de/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/de/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/de/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 63b00419d277..5d17d647b2cb 100644 --- a/de/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/de/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/de/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 013560a774d2..cf87403c9c31 100644 --- a/de/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/de/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic diff --git a/de/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/de/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index da2b11f0e5ed..e916b45da412 100644 --- a/de/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/de/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Henil Panchal , @@ -433,7 +436,7 @@

- Henil Panchal + Milan Curcic diff --git a/de/news/2022/index.html b/de/news/2022/index.html index 2af32c63ec47..8b7873f67f1e 100644 --- a/de/news/2022/index.html +++ b/de/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,7 +818,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -829,21 +832,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Ondřej Čertík + Alexis Perry-Holby diff --git a/de/news/archive/index.html b/de/news/archive/index.html index 86d4143d8418..713236af314f 100644 --- a/de/news/archive/index.html +++ b/de/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/atom.xml b/de/news/atom.xml index fb14317a887c..fbc9a2e940ac 100644 --- a/de/news/atom.xml +++ b/de/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:10:15.140427+00:00 + 2023-05-22T09:15:34.922227+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Henil Panchal + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Giannis Nikiteas + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Milan Curcic + Gagandeep Singh <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Ondřej Čertík + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Arjen Markus + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Damian Rouson + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Ivan Pribec + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Ondřej Čertík + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Ondřej Čertík + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - Laurence Kedward + and Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Jeremie Vandenplas + Brad Richardson <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/de/news/author/alexis-perry-holby/index.html b/de/news/author/alexis-perry-holby/index.html index 4bbc91844db0..182e720ff8f4 100644 --- a/de/news/author/alexis-perry-holby/index.html +++ b/de/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,7 +818,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -829,21 +832,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -999,14 +1002,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1228,7 +1231,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1242,7 +1245,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1302,35 +1305,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1390,35 +1393,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1478,28 +1481,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , diff --git a/de/news/author/and-jeremie-vandenplas/index.html b/de/news/author/and-jeremie-vandenplas/index.html index 69077e585643..9974925e1f22 100644 --- a/de/news/author/and-jeremie-vandenplas/index.html +++ b/de/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/de/news/author/and-laurence-kedward/index.html b/de/news/author/and-laurence-kedward/index.html index 885138aeb0e1..e001157f1100 100644 --- a/de/news/author/and-laurence-kedward/index.html +++ b/de/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -526,7 +529,7 @@

- Gary Klimowicz + Brad Richardson , @@ -540,14 +543,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -607,28 +610,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -642,14 +645,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz diff --git a/de/news/author/arjen-markus-and-gary-klimowicz/index.html b/de/news/author/arjen-markus-and-gary-klimowicz/index.html index 0cead5e04f1a..1999e7e1a35d 100644 --- a/de/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/de/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/author/arjen-markus/index.html b/de/news/author/arjen-markus/index.html index 9cad782c4eb0..fb65394e2fd2 100644 --- a/de/news/author/arjen-markus/index.html +++ b/de/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -609,42 +612,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -658,7 +661,7 @@

- Damian Rouson + Laurence Kedward diff --git a/de/news/author/brad-richardson/index.html b/de/news/author/brad-richardson/index.html index 43e53444fa28..89367430bdf5 100644 --- a/de/news/author/brad-richardson/index.html +++ b/de/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -609,14 +612,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -696,42 +699,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -745,7 +748,7 @@

- Damian Rouson + Laurence Kedward @@ -805,7 +808,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -819,42 +822,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -914,7 +917,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -928,7 +931,7 @@

- Gary Klimowicz + Brad Richardson , @@ -942,14 +945,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -1009,28 +1012,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -1044,14 +1047,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -1111,21 +1114,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/news/author/damian-rouson/index.html b/de/news/author/damian-rouson/index.html index e4e854c90fac..20ed2723e440 100644 --- a/de/news/author/damian-rouson/index.html +++ b/de/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -561,7 +564,7 @@

- Damian Rouson + Laurence Kedward diff --git a/de/news/author/gagandeep-singh/index.html b/de/news/author/gagandeep-singh/index.html index 2ac272aade79..0a7e626da86c 100644 --- a/de/news/author/gagandeep-singh/index.html +++ b/de/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -593,7 +596,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -607,21 +610,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh diff --git a/de/news/author/gary-klimowicz/index.html b/de/news/author/gary-klimowicz/index.html index fba522e49dfe..c0f69fd31020 100644 --- a/de/news/author/gary-klimowicz/index.html +++ b/de/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -526,7 +529,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -540,14 +543,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -608,14 +611,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -629,14 +632,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -696,7 +699,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -710,42 +713,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -805,7 +808,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -819,7 +822,7 @@

- Gary Klimowicz + Brad Richardson , @@ -833,14 +836,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -900,28 +903,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -935,14 +938,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz diff --git a/de/news/author/giannis-nikiteas/index.html b/de/news/author/giannis-nikiteas/index.html index c7dd835600ae..a91dad9c06f6 100644 --- a/de/news/author/giannis-nikiteas/index.html +++ b/de/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic diff --git a/de/news/author/henil-panchal/index.html b/de/news/author/henil-panchal/index.html index 06ef49a9a8a9..af48206b0688 100644 --- a/de/news/author/henil-panchal/index.html +++ b/de/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic diff --git a/de/news/author/index.html b/de/news/author/index.html index 1a58f0ec7c69..83e8fd04c7e9 100644 --- a/de/news/author/index.html +++ b/de/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/author/ivan-pribec/index.html b/de/news/author/ivan-pribec/index.html index 0c9bc07d80a5..3e5240cb0693 100644 --- a/de/news/author/ivan-pribec/index.html +++ b/de/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -526,42 +529,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward diff --git a/de/news/author/jeremie-vandenplas/index.html b/de/news/author/jeremie-vandenplas/index.html index 4389f83b70e5..dc8553a8a50c 100644 --- a/de/news/author/jeremie-vandenplas/index.html +++ b/de/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -526,21 +529,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -600,21 +603,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -628,7 +631,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -689,7 +692,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -703,21 +706,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -786,28 +789,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -874,7 +877,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -888,7 +891,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -902,14 +905,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -970,14 +973,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -991,14 +994,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1058,7 +1061,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -1072,7 +1075,7 @@

- Gary Klimowicz + Brad Richardson , @@ -1086,14 +1089,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -1153,28 +1156,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -1188,14 +1191,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -1255,35 +1258,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/author/laurence-kedward/index.html b/de/news/author/laurence-kedward/index.html index 139b933633cc..0c12abfde245 100644 --- a/de/news/author/laurence-kedward/index.html +++ b/de/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -526,21 +529,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -683,14 +686,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -757,14 +760,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -778,14 +781,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -845,14 +848,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -926,42 +929,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1023,35 +1026,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1111,14 +1114,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1198,35 +1201,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1286,42 +1289,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -1335,7 +1338,7 @@

- Damian Rouson + Laurence Kedward @@ -1395,14 +1398,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1469,28 +1472,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -1557,7 +1560,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1571,7 +1574,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -1585,14 +1588,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1653,14 +1656,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -1674,14 +1677,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1741,7 +1744,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1755,42 +1758,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -1850,35 +1853,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1938,21 +1941,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/de/news/author/marshall-ward/index.html b/de/news/author/marshall-ward/index.html index c1c5a2adcf8d..7a4cffa58314 100644 --- a/de/news/author/marshall-ward/index.html +++ b/de/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -561,7 +564,7 @@

- Damian Rouson + Laurence Kedward diff --git a/de/news/author/milan-curcic-and-ondrej-certik/index.html b/de/news/author/milan-curcic-and-ondrej-certik/index.html index 14b73d3c22f5..1ea13124224f 100644 --- a/de/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/de/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/news/author/milan-curcic/index.html b/de/news/author/milan-curcic/index.html index c90961b66031..12b416efbca2 100644 --- a/de/news/author/milan-curcic/index.html +++ b/de/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,7 +818,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -829,21 +832,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -992,7 +995,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1006,21 +1009,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1251,7 +1254,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1265,7 +1268,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1325,14 +1328,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1399,14 +1402,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1420,14 +1423,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1487,14 +1490,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1568,42 +1571,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1665,35 +1668,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1753,14 +1756,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1840,35 +1843,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1928,42 +1931,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -1977,7 +1980,7 @@

- Damian Rouson + Laurence Kedward @@ -2037,14 +2040,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -2111,28 +2114,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -2199,7 +2202,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2213,7 +2216,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -2227,14 +2230,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2295,14 +2298,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -2316,14 +2319,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2383,7 +2386,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2397,42 +2400,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -2492,7 +2495,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -2506,7 +2509,7 @@

- Gary Klimowicz + Brad Richardson , @@ -2520,14 +2523,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2587,28 +2590,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -2622,14 +2625,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2689,35 +2692,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2777,21 +2780,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/de/news/author/ondrej-certik-and-zach-jibben/index.html b/de/news/author/ondrej-certik-and-zach-jibben/index.html index 3a188e7f24b0..2d5e40228a2c 100644 --- a/de/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/de/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/author/ondrej-certik/index.html b/de/news/author/ondrej-certik/index.html index 06402456ff90..4c0b6580e9e1 100644 --- a/de/news/author/ondrej-certik/index.html +++ b/de/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -600,14 +603,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -667,21 +670,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -695,7 +698,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -756,7 +759,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -770,21 +773,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1015,7 +1018,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1029,7 +1032,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1089,14 +1092,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1163,14 +1166,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1184,14 +1187,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1251,14 +1254,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1332,42 +1335,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1429,35 +1432,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1517,14 +1520,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1604,35 +1607,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1692,42 +1695,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -1741,7 +1744,7 @@

- Damian Rouson + Laurence Kedward @@ -1801,14 +1804,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1875,7 +1878,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1889,7 +1892,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -1903,14 +1906,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1971,14 +1974,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -1992,14 +1995,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2059,7 +2062,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2073,42 +2076,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -2168,7 +2171,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -2182,7 +2185,7 @@

- Gary Klimowicz + Brad Richardson , @@ -2196,14 +2199,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2263,28 +2266,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -2298,14 +2301,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2365,35 +2368,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/author/sebastian-ehlert/index.html b/de/news/author/sebastian-ehlert/index.html index 4bb879d0238b..de9e8c590f5b 100644 --- a/de/news/author/sebastian-ehlert/index.html +++ b/de/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -526,21 +529,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -600,21 +603,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -628,7 +631,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -689,7 +692,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -703,21 +706,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -793,14 +796,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -948,7 +951,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -962,7 +965,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1022,14 +1025,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1043,14 +1046,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1110,14 +1113,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1191,42 +1194,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1288,35 +1291,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1376,35 +1379,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1464,42 +1467,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -1513,7 +1516,7 @@

- Damian Rouson + Laurence Kedward @@ -1573,28 +1576,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -1661,7 +1664,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1675,7 +1678,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -1689,14 +1692,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -1757,7 +1760,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1771,42 +1774,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward diff --git a/de/news/author/thomas-konig/index.html b/de/news/author/thomas-konig/index.html index d391a51b603c..4965b83230b0 100644 --- a/de/news/author/thomas-konig/index.html +++ b/de/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -547,14 +550,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz diff --git a/de/news/author/zachary-moon/index.html b/de/news/author/zachary-moon/index.html index a42f161bb42d..5cef804410d6 100644 --- a/de/news/author/zachary-moon/index.html +++ b/de/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -533,14 +536,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward diff --git a/de/news/category/index.html b/de/news/category/index.html index 48c806c8ec1d..25e04ea85200 100644 --- a/de/news/category/index.html +++ b/de/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/category/newsletter/index.html b/de/news/category/newsletter/index.html index 0ec866bb780e..6240160e8181 100644 --- a/de/news/category/newsletter/index.html +++ b/de/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,7 +818,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -829,21 +832,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -992,7 +995,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1006,21 +1009,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1325,7 +1328,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1399,14 +1402,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1473,14 +1476,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1494,14 +1497,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1561,14 +1564,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1642,42 +1645,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1739,35 +1742,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1827,14 +1830,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1914,35 +1917,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -2002,42 +2005,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -2051,7 +2054,7 @@

- Damian Rouson + Laurence Kedward @@ -2111,14 +2114,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -2185,28 +2188,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -2273,7 +2276,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2287,7 +2290,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -2301,14 +2304,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2369,14 +2372,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -2390,14 +2393,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2457,7 +2460,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2471,42 +2474,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -2566,7 +2569,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -2580,7 +2583,7 @@

- Gary Klimowicz + Brad Richardson , @@ -2594,14 +2597,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2661,28 +2664,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -2696,14 +2699,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2763,35 +2766,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/news/drafts/index.html b/de/news/drafts/index.html index 9858b39246c7..c2f9a30cf32c 100644 --- a/de/news/drafts/index.html +++ b/de/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/news/index.html b/de/news/index.html index e8de9bae93ea..98e72d47351c 100644 --- a/de/news/index.html +++ b/de/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Giannis Nikiteas , - Giannis Nikiteas + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,7 +818,7 @@

- Alexis Perry-Holby + Jérémie Vandenplas , @@ -829,21 +832,21 @@

- Jérémie Vandenplas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Milan Curcic + Gagandeep Singh @@ -903,21 +906,21 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Jérémie Vandenplas + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Ondřej Čertík + Alexis Perry-Holby @@ -992,7 +995,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -1006,21 +1009,21 @@

- Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1325,7 +1328,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1399,14 +1402,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1473,14 +1476,14 @@

- Zachary Moon + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , @@ -1494,14 +1497,14 @@

- Laurence Kedward + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward @@ -1561,14 +1564,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1642,42 +1645,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Arjen Markus , - Arjen Markus + Laurence Kedward @@ -1739,35 +1742,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -1827,14 +1830,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1914,35 +1917,35 @@

- Alexis Perry-Holby + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Ondřej Čertík + Laurence Kedward @@ -2002,42 +2005,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Marshall Ward , - Marshall Ward + Damian Rouson , @@ -2051,7 +2054,7 @@

- Damian Rouson + Laurence Kedward @@ -2111,14 +2114,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -2185,28 +2188,28 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Sebastian Ehlert + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Alexis Perry-Holby , @@ -2273,7 +2276,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2287,7 +2290,7 @@

- Gary Klimowicz + Sebastian Ehlert , @@ -2301,14 +2304,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2369,14 +2372,14 @@

- Jérémie Vandenplas + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , @@ -2390,14 +2393,14 @@

- Laurence Kedward + Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2457,7 +2460,7 @@

- Sebastian Ehlert + Ondřej Čertík , @@ -2471,42 +2474,42 @@

- Gary Klimowicz + Ivan Pribec , - Milan Curcic + Brad Richardson , - Brad Richardson + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Ondřej Čertík + Gary Klimowicz , - Ivan Pribec + Laurence Kedward @@ -2566,7 +2569,7 @@

- and Laurence Kedward + Ondřej Čertík , @@ -2580,7 +2583,7 @@

- Gary Klimowicz + Brad Richardson , @@ -2594,14 +2597,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2661,28 +2664,28 @@

- and Laurence Kedward + Ondřej Čertík , - Thomas König + Jérémie Vandenplas , - Jérémie Vandenplas + Brad Richardson , - Gary Klimowicz + Thomas König , @@ -2696,14 +2699,14 @@

- Brad Richardson + and Laurence Kedward , - Ondřej Čertík + Gary Klimowicz @@ -2763,35 +2766,35 @@

- Jérémie Vandenplas + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Arjen Markus and Gary Klimowicz + Milan Curcic , - Laurence Kedward + Arjen Markus and Gary Klimowicz , - Ondřej Čertík + Laurence Kedward @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Milan Curcic , - Milan Curcic + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Brad Richardson + Milan Curcic and Ondřej Čertík , - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson diff --git a/de/packages/data-types/index.html b/de/packages/data-types/index.html index 1cc1aef3c702..84f67a94e4ca 100644 --- a/de/packages/data-types/index.html +++ b/de/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/examples/index.html b/de/packages/examples/index.html index 3bfc70d5e469..582de283f95d 100644 --- a/de/packages/examples/index.html +++ b/de/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/graphics/index.html b/de/packages/graphics/index.html index ce9141a3542e..8ce19aaf067d 100644 --- a/de/packages/graphics/index.html +++ b/de/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/index.html b/de/packages/index.html index 6985eab14485..ead43d8a5b2c 100644 --- a/de/packages/index.html +++ b/de/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/interfaces/index.html b/de/packages/interfaces/index.html index 8f646c81e98d..ed3f35ba644f 100644 --- a/de/packages/interfaces/index.html +++ b/de/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/io/index.html b/de/packages/io/index.html index d2ff119c8211..24850c1e5937 100644 --- a/de/packages/io/index.html +++ b/de/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/libraries/index.html b/de/packages/libraries/index.html index abcfec4cb4a9..6c9bc11363e6 100644 --- a/de/packages/libraries/index.html +++ b/de/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/numerical/index.html b/de/packages/numerical/index.html index 4d1e7326fb2c..b8a2bf930f63 100644 --- a/de/packages/numerical/index.html +++ b/de/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/programming/index.html b/de/packages/programming/index.html index 16bf8daa500b..d341e2087047 100644 --- a/de/packages/programming/index.html +++ b/de/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/scientific/index.html b/de/packages/scientific/index.html index 23895c5dfd95..2c8b57868307 100644 --- a/de/packages/scientific/index.html +++ b/de/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/packages/strings/index.html b/de/packages/strings/index.html index 85563108eda1..45b24db2d605 100644 --- a/de/packages/strings/index.html +++ b/de/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/roadmap/index.html b/de/roadmap/index.html index d2d409cfbfb5..b80475588628 100644 --- a/de/roadmap/index.html +++ b/de/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/de/search/index.html b/de/search/index.html index 6eaf4268f5bf..74a8804d90d8 100644 --- a/de/search/index.html +++ b/de/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/.doctrees/community.doctree b/es/.doctrees/community.doctree index e3f5fb7d3c91..5778ba7ccd46 100644 Binary files a/es/.doctrees/community.doctree and b/es/.doctrees/community.doctree differ diff --git a/es/.doctrees/community/contributing.doctree b/es/.doctrees/community/contributing.doctree index 1dcc65dfa4c4..fba6fbe59618 100644 Binary files a/es/.doctrees/community/contributing.doctree and b/es/.doctrees/community/contributing.doctree differ diff --git a/es/.doctrees/community/minibooks.doctree b/es/.doctrees/community/minibooks.doctree index 78914eafdbaf..08253f25a237 100644 Binary files a/es/.doctrees/community/minibooks.doctree and b/es/.doctrees/community/minibooks.doctree differ diff --git a/es/.doctrees/compilers.doctree b/es/.doctrees/compilers.doctree index 5023ba350ece..4d29b2022a26 100644 Binary files a/es/.doctrees/compilers.doctree and b/es/.doctrees/compilers.doctree differ diff --git a/es/.doctrees/environment.pickle b/es/.doctrees/environment.pickle index fab434c72c35..4425233297ea 100644 Binary files a/es/.doctrees/environment.pickle and b/es/.doctrees/environment.pickle differ diff --git a/es/.doctrees/index.doctree b/es/.doctrees/index.doctree index 4c5a8df5a220..b7596386126f 100644 Binary files a/es/.doctrees/index.doctree and b/es/.doctrees/index.doctree differ diff --git a/es/.doctrees/learn.doctree b/es/.doctrees/learn.doctree index 95efb59df947..7144f7c34a63 100644 Binary files a/es/.doctrees/learn.doctree and b/es/.doctrees/learn.doctree differ diff --git a/es/.doctrees/packages/scientific.doctree b/es/.doctrees/packages/scientific.doctree index 9526f8aa6593..eb590a1fe514 100644 Binary files a/es/.doctrees/packages/scientific.doctree and b/es/.doctrees/packages/scientific.doctree differ diff --git a/es/community/contributing/index.html b/es/community/contributing/index.html index df74ee8ee8e8..96d999b22d23 100644 --- a/es/community/contributing/index.html +++ b/es/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/community/history/index.html b/es/community/history/index.html index 65ef992dc624..389fbb24ee3f 100644 --- a/es/community/history/index.html +++ b/es/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/community/index.html b/es/community/index.html index 659a258fd0ef..5522bb17709c 100644 --- a/es/community/index.html +++ b/es/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/community/minibooks/index.html b/es/community/minibooks/index.html index f516839bb45e..6e8d19c9a1cc 100644 --- a/es/community/minibooks/index.html +++ b/es/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/community/packages/index.html b/es/community/packages/index.html index 48c5eaaf518f..9f2999e9dcb1 100644 --- a/es/community/packages/index.html +++ b/es/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/compilers/index.html b/es/compilers/index.html index 760e66ade88e..bdda385df0bb 100644 --- a/es/compilers/index.html +++ b/es/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/genindex/index.html b/es/genindex/index.html index 7f7bfd125c39..93b81dbb9931 100644 --- a/es/genindex/index.html +++ b/es/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/index.html b/es/index.html index ebd7ce598be6..bce0da842cca 100644 --- a/es/index.html +++ b/es/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/allocatable_arrays/index.html b/es/learn/best_practices/allocatable_arrays/index.html index eecddcd8b669..c7cf523f01fb 100644 --- a/es/learn/best_practices/allocatable_arrays/index.html +++ b/es/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/arrays/index.html b/es/learn/best_practices/arrays/index.html index e589867f287b..012e548706e2 100644 --- a/es/learn/best_practices/arrays/index.html +++ b/es/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/callbacks/index.html b/es/learn/best_practices/callbacks/index.html index 5587a8813c92..d268e5a087b3 100644 --- a/es/learn/best_practices/callbacks/index.html +++ b/es/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/element_operations/index.html b/es/learn/best_practices/element_operations/index.html index 581fb2a91ef2..3c3288562bf6 100644 --- a/es/learn/best_practices/element_operations/index.html +++ b/es/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/file_io/index.html b/es/learn/best_practices/file_io/index.html index aa4d8c9e8157..9101360293e3 100644 --- a/es/learn/best_practices/file_io/index.html +++ b/es/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/floating_point/index.html b/es/learn/best_practices/floating_point/index.html index 6b797ffd7a98..b5c6466bd021 100644 --- a/es/learn/best_practices/floating_point/index.html +++ b/es/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/index.html b/es/learn/best_practices/index.html index be01f21b09b0..8775bc34d2a5 100644 --- a/es/learn/best_practices/index.html +++ b/es/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/integer_division/index.html b/es/learn/best_practices/integer_division/index.html index 280711ea9031..d27a94b68c85 100644 --- a/es/learn/best_practices/integer_division/index.html +++ b/es/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/modules_programs/index.html b/es/learn/best_practices/modules_programs/index.html index b0237d6f7980..99d6dae10e75 100644 --- a/es/learn/best_practices/modules_programs/index.html +++ b/es/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/multidim_arrays/index.html b/es/learn/best_practices/multidim_arrays/index.html index d78c245886e3..137a66f51dde 100644 --- a/es/learn/best_practices/multidim_arrays/index.html +++ b/es/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/style_guide/index.html b/es/learn/best_practices/style_guide/index.html index 8958974b2882..532169efa6e8 100644 --- a/es/learn/best_practices/style_guide/index.html +++ b/es/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/best_practices/type_casting/index.html b/es/learn/best_practices/type_casting/index.html index be3778212c01..2fe69caf1701 100644 --- a/es/learn/best_practices/type_casting/index.html +++ b/es/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/build_tools/index.html b/es/learn/building_programs/build_tools/index.html index 971558ff6382..57941d993622 100644 --- a/es/learn/building_programs/build_tools/index.html +++ b/es/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/compiling_source/index.html b/es/learn/building_programs/compiling_source/index.html index 5149a9237667..8641c86ba836 100644 --- a/es/learn/building_programs/compiling_source/index.html +++ b/es/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/distributing/index.html b/es/learn/building_programs/distributing/index.html index feeb6737d6de..f9f6fb46c8e5 100644 --- a/es/learn/building_programs/distributing/index.html +++ b/es/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/include_files/index.html b/es/learn/building_programs/include_files/index.html index 2626e307724e..209c357427c2 100644 --- a/es/learn/building_programs/include_files/index.html +++ b/es/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/index.html b/es/learn/building_programs/index.html index 1f980885125e..b7dd1d29a909 100644 --- a/es/learn/building_programs/index.html +++ b/es/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/linking_pieces/index.html b/es/learn/building_programs/linking_pieces/index.html index efb97ebd7804..cb32ca4a2ec7 100644 --- a/es/learn/building_programs/linking_pieces/index.html +++ b/es/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/managing_libraries/index.html b/es/learn/building_programs/managing_libraries/index.html index 97cb749c2ec4..200bde11112e 100644 --- a/es/learn/building_programs/managing_libraries/index.html +++ b/es/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/project_make/index.html b/es/learn/building_programs/project_make/index.html index 18e34aa38c24..0b1c3051b2a5 100644 --- a/es/learn/building_programs/project_make/index.html +++ b/es/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/building_programs/runtime_libraries/index.html b/es/learn/building_programs/runtime_libraries/index.html index f815f252d732..ab91ed740f5e 100644 --- a/es/learn/building_programs/runtime_libraries/index.html +++ b/es/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/index.html b/es/learn/index.html index ecd48e22a163..1db9db9f1c3b 100644 --- a/es/learn/index.html +++ b/es/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/array/index.html b/es/learn/intrinsics/array/index.html index 942ed4c0be4f..a16bd6d820bb 100644 --- a/es/learn/intrinsics/array/index.html +++ b/es/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/bit/index.html b/es/learn/intrinsics/bit/index.html index c381bba2dd27..48681374fe42 100644 --- a/es/learn/intrinsics/bit/index.html +++ b/es/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/cfi/index.html b/es/learn/intrinsics/cfi/index.html index bb023442ed05..2252b774e1a2 100644 --- a/es/learn/intrinsics/cfi/index.html +++ b/es/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/character/index.html b/es/learn/intrinsics/character/index.html index 43c2635b69e4..5741fa6ccdcf 100644 --- a/es/learn/intrinsics/character/index.html +++ b/es/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/compiler/index.html b/es/learn/intrinsics/compiler/index.html index 5e6c3d922633..eb43b22d8d9b 100644 --- a/es/learn/intrinsics/compiler/index.html +++ b/es/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/index.html b/es/learn/intrinsics/index.html index d47e115d18fc..b11b86512eae 100644 --- a/es/learn/intrinsics/index.html +++ b/es/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/math/index.html b/es/learn/intrinsics/math/index.html index 9f2e3355c82c..97dd9764d6c5 100644 --- a/es/learn/intrinsics/math/index.html +++ b/es/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/model/index.html b/es/learn/intrinsics/model/index.html index d8e676f56dac..c7d4bd37565f 100644 --- a/es/learn/intrinsics/model/index.html +++ b/es/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/numeric/index.html b/es/learn/intrinsics/numeric/index.html index 61463c4d260d..43e052f672b7 100644 --- a/es/learn/intrinsics/numeric/index.html +++ b/es/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/parallel/index.html b/es/learn/intrinsics/parallel/index.html index c7999eb3c97a..4485774e8898 100644 --- a/es/learn/intrinsics/parallel/index.html +++ b/es/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/state/index.html b/es/learn/intrinsics/state/index.html index d2c1f9ae1000..670a8bcf0325 100644 --- a/es/learn/intrinsics/state/index.html +++ b/es/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/system/index.html b/es/learn/intrinsics/system/index.html index 108ee4d3abab..fa8d2e33e115 100644 --- a/es/learn/intrinsics/system/index.html +++ b/es/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/transform/index.html b/es/learn/intrinsics/transform/index.html index 29751bec65e4..8ed0bee04e25 100644 --- a/es/learn/intrinsics/transform/index.html +++ b/es/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/intrinsics/type/index.html b/es/learn/intrinsics/type/index.html index 4ff4a25eec11..05bc98470c96 100644 --- a/es/learn/intrinsics/type/index.html +++ b/es/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/choose_compiler/index.html b/es/learn/os_setup/choose_compiler/index.html index 826d438a9a0b..badddebff46a 100644 --- a/es/learn/os_setup/choose_compiler/index.html +++ b/es/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/ides/index.html b/es/learn/os_setup/ides/index.html index aee6f20ef490..2ee45cb027f5 100644 --- a/es/learn/os_setup/ides/index.html +++ b/es/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/index.html b/es/learn/os_setup/index.html index c17a404f78b4..8d5cc2016c57 100644 --- a/es/learn/os_setup/index.html +++ b/es/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/install_gfortran/index.html b/es/learn/os_setup/install_gfortran/index.html index dab4d967fe18..89e02fd8c4ea 100644 --- a/es/learn/os_setup/install_gfortran/index.html +++ b/es/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/text_editors/index.html b/es/learn/os_setup/text_editors/index.html index 9a6313ddcd02..63943e9acea8 100644 --- a/es/learn/os_setup/text_editors/index.html +++ b/es/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/os_setup/tips/index.html b/es/learn/os_setup/tips/index.html index bf16607f7cbe..08c07fee99f4 100644 --- a/es/learn/os_setup/tips/index.html +++ b/es/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/arrays_strings/index.html b/es/learn/quickstart/arrays_strings/index.html index 9c287f265b47..5ab42a9ce4cc 100644 --- a/es/learn/quickstart/arrays_strings/index.html +++ b/es/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/derived_types/index.html b/es/learn/quickstart/derived_types/index.html index 626e2bc9253e..c500355d5d20 100644 --- a/es/learn/quickstart/derived_types/index.html +++ b/es/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/hello_world/index.html b/es/learn/quickstart/hello_world/index.html index 058fab579d79..28fb1ea00647 100644 --- a/es/learn/quickstart/hello_world/index.html +++ b/es/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/index.html b/es/learn/quickstart/index.html index 3788d65f364f..4486ff85cbe7 100644 --- a/es/learn/quickstart/index.html +++ b/es/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/operators_control_flow/index.html b/es/learn/quickstart/operators_control_flow/index.html index 037c24f71e97..bf459bba3b0d 100644 --- a/es/learn/quickstart/operators_control_flow/index.html +++ b/es/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/organising_code/index.html b/es/learn/quickstart/organising_code/index.html index 56d4192591d6..659ecb31fcec 100644 --- a/es/learn/quickstart/organising_code/index.html +++ b/es/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/learn/quickstart/variables/index.html b/es/learn/quickstart/variables/index.html index 2a5f03cfd636..d73e14737da5 100644 --- a/es/learn/quickstart/variables/index.html +++ b/es/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2020/02-28-J3-february-meeting/index.html b/es/news/2020/02-28-J3-february-meeting/index.html index 2070e867a2b8..bf232336da43 100644 --- a/es/news/2020/02-28-J3-february-meeting/index.html +++ b/es/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2020/04-06-Announcing-FortranCon-2020/index.html b/es/news/2020/04-06-Announcing-FortranCon-2020/index.html index a6c58b7765e4..df37f70f1d35 100644 --- a/es/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/es/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2020/04-18-Fortran-Webinar/index.html b/es/news/2020/04-18-Fortran-Webinar/index.html index 6d568c0aa75e..9af69b52f0c6 100644 --- a/es/news/2020/04-18-Fortran-Webinar/index.html +++ b/es/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/es/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index f288258f08ef..a352ef1545c8 100644 --- a/es/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/es/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/es/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 3cb01ca05b82..ba58541db207 100644 --- a/es/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/es/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/es/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index bb6b0eb96f56..25cc4d22474c 100644 --- a/es/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/es/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -426,7 +429,7 @@

- and Jérémie Vandenplas + Laurence Kedward diff --git a/es/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/es/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 7d0fa8006dba..0ad341588a59 100644 --- a/es/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/es/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/es/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 2f5759fee469..aa6858a74801 100644 --- a/es/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/es/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , diff --git a/es/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/es/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index a5055c7d9df6..3d1d15559b58 100644 --- a/es/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/es/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -440,7 +443,7 @@

- Milan Curcic + Jérémie Vandenplas , diff --git a/es/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/es/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 54edab7346c1..fcd041613a1c 100644 --- a/es/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/es/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -461,7 +464,7 @@

- Ivan Pribec + Laurence Kedward diff --git a/es/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/es/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index e96da964e3ad..e156f8bf75a9 100644 --- a/es/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/es/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2020/index.html b/es/news/2020/index.html index 7245efc30501..b0c638ddcc6b 100644 --- a/es/news/2020/index.html +++ b/es/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -600,42 +603,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -649,7 +652,7 @@

- Ivan Pribec + Laurence Kedward @@ -709,21 +712,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -737,7 +740,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -804,42 +807,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -906,35 +909,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -994,7 +997,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -1008,7 +1011,7 @@

- and Jérémie Vandenplas + Laurence Kedward @@ -1068,21 +1071,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/es/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index d958e2f32ede..7837a200a4f5 100644 --- a/es/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/es/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/es/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index 5b042e56b360..7b11fafa1800 100644 --- a/es/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/es/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/es/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 4f438c898d8c..298ddcd713b4 100644 --- a/es/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/es/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -426,7 +429,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/es/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/es/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index fc364261429f..56a8ad6034c5 100644 --- a/es/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/es/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward diff --git a/es/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/es/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index 868dd1c0740e..c80dc24d2e9c 100644 --- a/es/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/es/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward diff --git a/es/news/2021/04-20-First-Year/index.html b/es/news/2021/04-20-First-Year/index.html index e5e8d532b818..d3c4bd1d35a8 100644 --- a/es/news/2021/04-20-First-Year/index.html +++ b/es/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson diff --git a/es/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/es/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index a3197512fe13..1d6cd143938f 100644 --- a/es/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/es/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward diff --git a/es/news/2021/05-18-Welcome-GSoC-students/index.html b/es/news/2021/05-18-Welcome-GSoC-students/index.html index 31dd587ea51d..fd7060402d2e 100644 --- a/es/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/es/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward diff --git a/es/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/es/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 10ac20a163d0..f3e15e9aa254 100644 --- a/es/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/es/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward diff --git a/es/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/es/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 4da50dcdee4a..032d3ec6a9d4 100644 --- a/es/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/es/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward diff --git a/es/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/es/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index 9c0096107efa..18de1a683a6f 100644 --- a/es/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/es/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -426,7 +429,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/es/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/es/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index b3c19b009041..40ceef32a57d 100644 --- a/es/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/es/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Ondřej Čertík , @@ -426,7 +429,7 @@

- Ondřej Čertík + Milan Curcic , diff --git a/es/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/es/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 7ad6dde338ec..d3841b366d82 100644 --- a/es/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/es/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby diff --git a/es/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/es/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index e6d5aa6f5917..5b1eb9be81d5 100644 --- a/es/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/es/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -426,14 +429,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby diff --git a/es/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/es/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 5ca3833b8662..0b19c29ce2ac 100644 --- a/es/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/es/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , diff --git a/es/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/es/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 4acb5b4d6220..4142a5b7f7e0 100644 --- a/es/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/es/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2021/index.html b/es/news/2021/index.html index e20c650f0882..00c5f4a70a88 100644 --- a/es/news/2021/index.html +++ b/es/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -609,14 +612,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -683,7 +686,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -697,14 +700,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -764,21 +767,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -838,7 +841,7 @@

- Milan Curcic + Ondřej Čertík , @@ -852,7 +855,7 @@

- Ondřej Čertík + Milan Curcic , @@ -919,7 +922,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -933,7 +936,7 @@

- Ondřej Čertík + Laurence Kedward @@ -993,35 +996,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1081,28 +1084,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1162,42 +1165,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1259,35 +1262,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1347,28 +1350,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1434,35 +1437,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1522,56 +1525,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -1631,7 +1634,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1645,7 +1648,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1705,35 +1708,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1793,42 +1796,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/es/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 7f31f162f08e..c23fc105119e 100644 --- a/es/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/es/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/es/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/es/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index 68ccf5b8f692..25185201a560 100644 --- a/es/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/es/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas diff --git a/es/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/es/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 6a67a5af1876..0ad226cacaba 100644 --- a/es/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/es/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/es/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/es/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 7f967afe4aed..92e0e7570528 100644 --- a/es/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/es/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/es/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index c946b86c6979..792733f02d55 100644 --- a/es/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/es/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas diff --git a/es/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/es/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index a81658af354d..cef3afc94dcb 100644 --- a/es/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/es/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Henil Panchal + Ondřej Čertík , @@ -426,14 +429,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal diff --git a/es/news/2022/index.html b/es/news/2022/index.html index cd50df9653da..8601fcec27c4 100644 --- a/es/news/2022/index.html +++ b/es/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,28 +596,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -741,14 +744,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -903,35 +906,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/es/news/archive/index.html b/es/news/archive/index.html index f3a8948854be..431bf3dfdc74 100644 --- a/es/news/archive/index.html +++ b/es/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/atom.xml b/es/news/atom.xml index ef16f9c51bbc..1be2b1be4235 100644 --- a/es/news/atom.xml +++ b/es/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:11:02.471509+00:00 + 2023-05-22T09:16:30.168012+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Alexis Perry-Holby + Henil Panchal <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Alexis Perry-Holby + Giannis Nikiteas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Alexis Perry-Holby + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -191,7 +191,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Milan Curcic + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -211,7 +211,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Ondřej Čertík + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Brad Richardson + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Alexis Perry-Holby + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we’ve had several updates to t First year of the Fortran website 2021-04-20T00:00:00+00:00 - Ondřej Čertík + Brad Richardson <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Alexis Perry-Holby + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Marshall Ward + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Ivan Pribec + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - and Jérémie Vandenplas + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Brad Richardson + Milan Curcic and Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/es/news/author/alexis-perry-holby/index.html b/es/news/author/alexis-perry-holby/index.html index bda7e3aeeb1e..26da1692aad3 100644 --- a/es/news/author/alexis-perry-holby/index.html +++ b/es/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,28 +596,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -741,14 +744,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -903,35 +906,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,14 +995,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -1066,7 +1069,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -1080,14 +1083,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -1147,21 +1150,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1221,7 +1224,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1235,7 +1238,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1302,35 +1305,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1390,35 +1393,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1478,35 +1481,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/author/and-jeremie-vandenplas/index.html b/es/news/author/and-jeremie-vandenplas/index.html index 24055293acbf..d7ce5abbfdcf 100644 --- a/es/news/author/and-jeremie-vandenplas/index.html +++ b/es/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -526,7 +529,7 @@

- and Jérémie Vandenplas + Laurence Kedward diff --git a/es/news/author/and-laurence-kedward/index.html b/es/news/author/and-laurence-kedward/index.html index 9fbf2031e2a5..8a50040f2760 100644 --- a/es/news/author/and-laurence-kedward/index.html +++ b/es/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -540,7 +543,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -607,42 +610,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , diff --git a/es/news/author/arjen-markus-and-gary-klimowicz/index.html b/es/news/author/arjen-markus-and-gary-klimowicz/index.html index 88d47f024b6a..0bc8cdc70b08 100644 --- a/es/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/es/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/author/arjen-markus/index.html b/es/news/author/arjen-markus/index.html index 0602acd28a99..497b567d1f02 100644 --- a/es/news/author/arjen-markus/index.html +++ b/es/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -609,56 +612,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward diff --git a/es/news/author/brad-richardson/index.html b/es/news/author/brad-richardson/index.html index c205e2713ca3..75a657159ed9 100644 --- a/es/news/author/brad-richardson/index.html +++ b/es/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -609,28 +612,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -696,56 +699,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -805,42 +808,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -854,7 +857,7 @@

- Ivan Pribec + Laurence Kedward @@ -914,21 +917,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -942,7 +945,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -1009,42 +1012,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -1111,21 +1114,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/news/author/damian-rouson/index.html b/es/news/author/damian-rouson/index.html index 511642b692ca..6973438c81e4 100644 --- a/es/news/author/damian-rouson/index.html +++ b/es/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward diff --git a/es/news/author/gagandeep-singh/index.html b/es/news/author/gagandeep-singh/index.html index 94a5990f6ad1..70b56a74d298 100644 --- a/es/news/author/gagandeep-singh/index.html +++ b/es/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -593,35 +596,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas diff --git a/es/news/author/gary-klimowicz/index.html b/es/news/author/gary-klimowicz/index.html index 4d054d7706f4..d3fba6e1fba8 100644 --- a/es/news/author/gary-klimowicz/index.html +++ b/es/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -608,35 +611,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -696,42 +699,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -745,7 +748,7 @@

- Ivan Pribec + Laurence Kedward @@ -805,21 +808,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -833,7 +836,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -900,42 +903,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , diff --git a/es/news/author/giannis-nikiteas/index.html b/es/news/author/giannis-nikiteas/index.html index bee64cab8990..ec9f5031ed6e 100644 --- a/es/news/author/giannis-nikiteas/index.html +++ b/es/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas diff --git a/es/news/author/henil-panchal/index.html b/es/news/author/henil-panchal/index.html index 35da9cf2e204..dbb7b0ee78e5 100644 --- a/es/news/author/henil-panchal/index.html +++ b/es/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal diff --git a/es/news/author/index.html b/es/news/author/index.html index dfd33156726c..a14622cfe9a0 100644 --- a/es/news/author/index.html +++ b/es/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/author/ivan-pribec/index.html b/es/news/author/ivan-pribec/index.html index d747283ab3d0..ab5e4b40ae44 100644 --- a/es/news/author/ivan-pribec/index.html +++ b/es/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -561,7 +564,7 @@

- Ivan Pribec + Laurence Kedward diff --git a/es/news/author/jeremie-vandenplas/index.html b/es/news/author/jeremie-vandenplas/index.html index 55d999a3828e..903733d68df5 100644 --- a/es/news/author/jeremie-vandenplas/index.html +++ b/es/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -600,35 +603,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -689,35 +692,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -786,35 +789,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -874,42 +877,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -970,35 +973,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1058,21 +1061,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -1086,7 +1089,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -1153,42 +1156,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -1255,35 +1258,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/author/laurence-kedward/index.html b/es/news/author/laurence-kedward/index.html index d16b779fe125..79b2b127613d 100644 --- a/es/news/author/laurence-kedward/index.html +++ b/es/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -609,21 +612,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -683,7 +686,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -697,7 +700,7 @@

- Ondřej Čertík + Laurence Kedward @@ -757,35 +760,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -845,28 +848,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -926,42 +929,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1023,35 +1026,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1111,28 +1114,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1198,35 +1201,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1286,56 +1289,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -1395,7 +1398,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1409,7 +1412,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1469,35 +1472,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1557,42 +1560,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1653,35 +1656,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1741,42 +1744,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -1790,7 +1793,7 @@

- Ivan Pribec + Laurence Kedward @@ -1850,35 +1853,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1938,7 +1941,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -1952,7 +1955,7 @@

- and Jérémie Vandenplas + Laurence Kedward diff --git a/es/news/author/marshall-ward/index.html b/es/news/author/marshall-ward/index.html index 47789c4a6afc..2b3242769c5c 100644 --- a/es/news/author/marshall-ward/index.html +++ b/es/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward diff --git a/es/news/author/milan-curcic-and-ondrej-certik/index.html b/es/news/author/milan-curcic-and-ondrej-certik/index.html index 896c95233031..f2477a629457 100644 --- a/es/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/es/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/news/author/milan-curcic/index.html b/es/news/author/milan-curcic/index.html index 8f27e62d6089..476b86183c39 100644 --- a/es/news/author/milan-curcic/index.html +++ b/es/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,28 +596,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -741,14 +744,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -903,35 +906,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1089,14 +1092,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -1163,7 +1166,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -1244,7 +1247,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1258,7 +1261,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1325,7 +1328,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1339,7 +1342,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1399,35 +1402,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1487,28 +1490,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1568,42 +1571,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1665,35 +1668,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1753,28 +1756,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1840,35 +1843,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1928,56 +1931,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -2037,7 +2040,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2051,7 +2054,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2111,35 +2114,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2199,42 +2202,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2295,35 +2298,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2383,42 +2386,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -2432,7 +2435,7 @@

- Ivan Pribec + Laurence Kedward @@ -2492,21 +2495,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -2520,7 +2523,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -2587,42 +2590,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -2689,35 +2692,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2777,7 +2780,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -2791,7 +2794,7 @@

- and Jérémie Vandenplas + Laurence Kedward diff --git a/es/news/author/ondrej-certik-and-zach-jibben/index.html b/es/news/author/ondrej-certik-and-zach-jibben/index.html index e8414cf29225..e981a5101c23 100644 --- a/es/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/es/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/author/ondrej-certik/index.html b/es/news/author/ondrej-certik/index.html index 96b5033b3397..bf1eed95b8f0 100644 --- a/es/news/author/ondrej-certik/index.html +++ b/es/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,14 +596,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -667,35 +670,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -756,35 +759,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -853,7 +856,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -867,14 +870,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -934,21 +937,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1008,7 +1011,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1022,7 +1025,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1089,7 +1092,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1103,7 +1106,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1163,35 +1166,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1251,28 +1254,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1332,42 +1335,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1429,35 +1432,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1517,28 +1520,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1604,35 +1607,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1692,56 +1695,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -1801,7 +1804,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1815,7 +1818,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1875,42 +1878,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1971,35 +1974,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2059,42 +2062,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -2108,7 +2111,7 @@

- Ivan Pribec + Laurence Kedward @@ -2168,21 +2171,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -2196,7 +2199,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -2263,42 +2266,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -2365,35 +2368,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward diff --git a/es/news/author/sebastian-ehlert/index.html b/es/news/author/sebastian-ehlert/index.html index 117b2a1b5c7e..b4e0ed900560 100644 --- a/es/news/author/sebastian-ehlert/index.html +++ b/es/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -600,35 +603,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -689,35 +692,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -786,14 +789,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -860,7 +863,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -874,14 +877,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -941,7 +944,7 @@

- Milan Curcic + Ondřej Čertík , @@ -955,7 +958,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1022,35 +1025,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1110,28 +1113,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1191,42 +1194,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1288,35 +1291,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1376,35 +1379,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1464,56 +1467,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -1573,35 +1576,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1661,42 +1664,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1757,42 +1760,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -1806,7 +1809,7 @@

- Ivan Pribec + Laurence Kedward diff --git a/es/news/author/thomas-konig/index.html b/es/news/author/thomas-konig/index.html index 2d7f8cde61d4..6a8c8741725a 100644 --- a/es/news/author/thomas-konig/index.html +++ b/es/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , diff --git a/es/news/author/zachary-moon/index.html b/es/news/author/zachary-moon/index.html index cb1ad3d97eb1..51c5cec1cd9f 100644 --- a/es/news/author/zachary-moon/index.html +++ b/es/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward diff --git a/es/news/category/index.html b/es/news/category/index.html index 2055dbd65e35..7653f817b041 100644 --- a/es/news/category/index.html +++ b/es/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/category/newsletter/index.html b/es/news/category/newsletter/index.html index a42d4fe36482..c473df1425fa 100644 --- a/es/news/category/newsletter/index.html +++ b/es/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,28 +596,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -741,14 +744,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -903,35 +906,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1089,14 +1092,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -1163,7 +1166,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -1244,21 +1247,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1318,7 +1321,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1332,7 +1335,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1399,7 +1402,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1413,7 +1416,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1473,35 +1476,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1561,28 +1564,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1642,42 +1645,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1739,35 +1742,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1827,28 +1830,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1914,35 +1917,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -2002,56 +2005,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -2111,7 +2114,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2125,7 +2128,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2185,35 +2188,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2273,42 +2276,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2369,35 +2372,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2457,42 +2460,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -2506,7 +2509,7 @@

- Ivan Pribec + Laurence Kedward @@ -2566,21 +2569,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -2594,7 +2597,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -2661,42 +2664,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -2763,35 +2766,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2851,7 +2854,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -2865,7 +2868,7 @@

- and Jérémie Vandenplas + Laurence Kedward @@ -2925,21 +2928,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/news/drafts/index.html b/es/news/drafts/index.html index 33ba066ac75b..4d3fabb7ead7 100644 --- a/es/news/drafts/index.html +++ b/es/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/news/index.html b/es/news/index.html index 029bfb542ffe..b9ab425f3e2a 100644 --- a/es/news/index.html +++ b/es/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Henil Panchal + Ondřej Čertík , @@ -526,14 +529,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal @@ -593,28 +596,28 @@

- Milan Curcic + Gagandeep Singh , - Giannis Nikiteas + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas @@ -741,14 +744,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas @@ -903,35 +906,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,35 +995,35 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -1089,14 +1092,14 @@

- Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , @@ -1163,7 +1166,7 @@

- Alexis Perry-Holby + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Alexis Perry-Holby @@ -1244,21 +1247,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1318,7 +1321,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1332,7 +1335,7 @@

- Ondřej Čertík + Milan Curcic , @@ -1399,7 +1402,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1413,7 +1416,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1473,35 +1476,35 @@

- Zachary Moon + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward @@ -1561,28 +1564,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Laurence Kedward @@ -1642,42 +1645,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Arjen Markus , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1739,35 +1742,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -1827,28 +1830,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Brad Richardson @@ -1914,35 +1917,35 @@

- Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward @@ -2002,56 +2005,56 @@

- Damian Rouson + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Damian Rouson , - Milan Curcic + Ondřej Čertík , - Arjen Markus + Brad Richardson , - Brad Richardson + Marshall Ward , - Marshall Ward + Laurence Kedward @@ -2111,7 +2114,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2125,7 +2128,7 @@

- Ondřej Čertík + Laurence Kedward @@ -2185,35 +2188,35 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Laurence Kedward + Milan Curcic , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2273,42 +2276,42 @@

- Ondřej Čertík + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2369,35 +2372,35 @@

- Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Gary Klimowicz , - Laurence Kedward + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2457,42 +2460,42 @@

- Jeremie Vandenplas + Sebastian Ehlert , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Jeremie Vandenplas , - Sebastian Ehlert + Ivan Pribec , - Gary Klimowicz + Ondřej Čertík , - Milan Curcic + Gary Klimowicz , @@ -2506,7 +2509,7 @@

- Ivan Pribec + Laurence Kedward @@ -2566,21 +2569,21 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , @@ -2594,7 +2597,7 @@

- Milan Curcic + Jérémie Vandenplas , @@ -2661,42 +2664,42 @@

- and Laurence Kedward + Milan Curcic , - Ondřej Čertík + and Laurence Kedward , - Jérémie Vandenplas + Ondřej Čertík , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Jérémie Vandenplas , - Milan Curcic + Thomas König , @@ -2763,35 +2766,35 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Ondřej Čertík + Arjen Markus and Gary Klimowicz , - Jérémie Vandenplas + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Laurence Kedward @@ -2851,7 +2854,7 @@

- Laurence Kedward + and Jérémie Vandenplas , @@ -2865,7 +2868,7 @@

- and Jérémie Vandenplas + Laurence Kedward @@ -2925,21 +2928,21 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík diff --git a/es/packages/data-types/index.html b/es/packages/data-types/index.html index 29575a2c8dec..c7bf214145f6 100644 --- a/es/packages/data-types/index.html +++ b/es/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/examples/index.html b/es/packages/examples/index.html index a553e2672924..512ff652b94d 100644 --- a/es/packages/examples/index.html +++ b/es/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/graphics/index.html b/es/packages/graphics/index.html index cfabbee4adc5..bb3b50cc8619 100644 --- a/es/packages/graphics/index.html +++ b/es/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/index.html b/es/packages/index.html index 64ad11ce6bca..0c4209eb5a60 100644 --- a/es/packages/index.html +++ b/es/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/interfaces/index.html b/es/packages/interfaces/index.html index ca7c2756a674..8ff92a9eef1d 100644 --- a/es/packages/interfaces/index.html +++ b/es/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/io/index.html b/es/packages/io/index.html index d59708d074b9..fbc2cd660ee1 100644 --- a/es/packages/io/index.html +++ b/es/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/libraries/index.html b/es/packages/libraries/index.html index ca547af7bf34..5e640a0603c8 100644 --- a/es/packages/libraries/index.html +++ b/es/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/numerical/index.html b/es/packages/numerical/index.html index e0750a810944..288d7eef76e4 100644 --- a/es/packages/numerical/index.html +++ b/es/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/programming/index.html b/es/packages/programming/index.html index 419c9f680982..645656c37ee1 100644 --- a/es/packages/programming/index.html +++ b/es/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/scientific/index.html b/es/packages/scientific/index.html index b100ccff024e..01fc284230cf 100644 --- a/es/packages/scientific/index.html +++ b/es/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/packages/strings/index.html b/es/packages/strings/index.html index ab8df7a8f02b..afd8013aedd2 100644 --- a/es/packages/strings/index.html +++ b/es/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/roadmap/index.html b/es/roadmap/index.html index 20bc142ddd36..12fdc09b8ef6 100644 --- a/es/roadmap/index.html +++ b/es/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/es/search/index.html b/es/search/index.html index e9470dcd818e..fdae8bf17d8a 100644 --- a/es/search/index.html +++ b/es/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/.doctrees/community.doctree b/fr/.doctrees/community.doctree index f3c601551e14..ffeb5a61e805 100644 Binary files a/fr/.doctrees/community.doctree and b/fr/.doctrees/community.doctree differ diff --git a/fr/.doctrees/community/contributing.doctree b/fr/.doctrees/community/contributing.doctree index c4572524e23b..2dc56c7019de 100644 Binary files a/fr/.doctrees/community/contributing.doctree and b/fr/.doctrees/community/contributing.doctree differ diff --git a/fr/.doctrees/compilers.doctree b/fr/.doctrees/compilers.doctree index 774bdcd40cbb..983e77371a63 100644 Binary files a/fr/.doctrees/compilers.doctree and b/fr/.doctrees/compilers.doctree differ diff --git a/fr/.doctrees/environment.pickle b/fr/.doctrees/environment.pickle index 97b1bc046d53..ff73fb35a127 100644 Binary files a/fr/.doctrees/environment.pickle and b/fr/.doctrees/environment.pickle differ diff --git a/fr/.doctrees/index.doctree b/fr/.doctrees/index.doctree index b91f7eb3c765..3d079b605c0c 100644 Binary files a/fr/.doctrees/index.doctree and b/fr/.doctrees/index.doctree differ diff --git a/fr/.doctrees/learn.doctree b/fr/.doctrees/learn.doctree index f013c7db1ed6..a64fcc482a70 100644 Binary files a/fr/.doctrees/learn.doctree and b/fr/.doctrees/learn.doctree differ diff --git a/fr/.doctrees/packages.doctree b/fr/.doctrees/packages.doctree index 5b0a5afcf9f1..997782157be8 100644 Binary files a/fr/.doctrees/packages.doctree and b/fr/.doctrees/packages.doctree differ diff --git a/fr/.doctrees/packages/data-types.doctree b/fr/.doctrees/packages/data-types.doctree index ace14e2f1ece..d561f398c290 100644 Binary files a/fr/.doctrees/packages/data-types.doctree and b/fr/.doctrees/packages/data-types.doctree differ diff --git a/fr/.doctrees/packages/examples.doctree b/fr/.doctrees/packages/examples.doctree index e4692a2900db..936067e370da 100644 Binary files a/fr/.doctrees/packages/examples.doctree and b/fr/.doctrees/packages/examples.doctree differ diff --git a/fr/.doctrees/packages/graphics.doctree b/fr/.doctrees/packages/graphics.doctree index 7b75a94d13bb..3f1f9622dfa4 100644 Binary files a/fr/.doctrees/packages/graphics.doctree and b/fr/.doctrees/packages/graphics.doctree differ diff --git a/fr/.doctrees/packages/interfaces.doctree b/fr/.doctrees/packages/interfaces.doctree index c4676804893c..d32e44626a19 100644 Binary files a/fr/.doctrees/packages/interfaces.doctree and b/fr/.doctrees/packages/interfaces.doctree differ diff --git a/fr/.doctrees/packages/io.doctree b/fr/.doctrees/packages/io.doctree index 13550dc5dc1d..1a378e3e173b 100644 Binary files a/fr/.doctrees/packages/io.doctree and b/fr/.doctrees/packages/io.doctree differ diff --git a/fr/.doctrees/packages/libraries.doctree b/fr/.doctrees/packages/libraries.doctree index 60ffc301aef4..bb9a26a48a0b 100644 Binary files a/fr/.doctrees/packages/libraries.doctree and b/fr/.doctrees/packages/libraries.doctree differ diff --git a/fr/.doctrees/packages/numerical.doctree b/fr/.doctrees/packages/numerical.doctree index a3a4febd4bb5..f9210e30f1dd 100644 Binary files a/fr/.doctrees/packages/numerical.doctree and b/fr/.doctrees/packages/numerical.doctree differ diff --git a/fr/.doctrees/packages/programming.doctree b/fr/.doctrees/packages/programming.doctree index 0e690cc7e6ef..b29d00d49084 100644 Binary files a/fr/.doctrees/packages/programming.doctree and b/fr/.doctrees/packages/programming.doctree differ diff --git a/fr/.doctrees/packages/scientific.doctree b/fr/.doctrees/packages/scientific.doctree index a777a96cec6e..774affd3d28c 100644 Binary files a/fr/.doctrees/packages/scientific.doctree and b/fr/.doctrees/packages/scientific.doctree differ diff --git a/fr/.doctrees/packages/strings.doctree b/fr/.doctrees/packages/strings.doctree index 087be06bf8d4..d868b7fa356f 100644 Binary files a/fr/.doctrees/packages/strings.doctree and b/fr/.doctrees/packages/strings.doctree differ diff --git a/fr/community/contributing/index.html b/fr/community/contributing/index.html index f643681ae935..5a16f7e0c04b 100644 --- a/fr/community/contributing/index.html +++ b/fr/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/community/history/index.html b/fr/community/history/index.html index f1620f7c2159..4495b2f8bb9f 100644 --- a/fr/community/history/index.html +++ b/fr/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/community/index.html b/fr/community/index.html index e7f24489be40..35d22e72751a 100644 --- a/fr/community/index.html +++ b/fr/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/community/minibooks/index.html b/fr/community/minibooks/index.html index 4b22d21a72c5..927f51711a09 100644 --- a/fr/community/minibooks/index.html +++ b/fr/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/community/packages/index.html b/fr/community/packages/index.html index a891e2f31a07..abc98989b751 100644 --- a/fr/community/packages/index.html +++ b/fr/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/compilers/index.html b/fr/compilers/index.html index 9c9bdea26d1c..78548f219969 100644 --- a/fr/compilers/index.html +++ b/fr/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/genindex/index.html b/fr/genindex/index.html index ca9168769e06..70ae5e28978a 100644 --- a/fr/genindex/index.html +++ b/fr/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/index.html b/fr/index.html index b87c3be21b66..7b18ff2c3d93 100644 --- a/fr/index.html +++ b/fr/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/allocatable_arrays/index.html b/fr/learn/best_practices/allocatable_arrays/index.html index c091dac625b7..853a24394858 100644 --- a/fr/learn/best_practices/allocatable_arrays/index.html +++ b/fr/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/arrays/index.html b/fr/learn/best_practices/arrays/index.html index 7a98e34487eb..3a87cd04a03d 100644 --- a/fr/learn/best_practices/arrays/index.html +++ b/fr/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/callbacks/index.html b/fr/learn/best_practices/callbacks/index.html index 4e9cf43e4f90..577d15b09c74 100644 --- a/fr/learn/best_practices/callbacks/index.html +++ b/fr/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/element_operations/index.html b/fr/learn/best_practices/element_operations/index.html index 40618ce0dbb3..b39b40f98131 100644 --- a/fr/learn/best_practices/element_operations/index.html +++ b/fr/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/file_io/index.html b/fr/learn/best_practices/file_io/index.html index 5ebb453d1dc8..04ebc644ad0b 100644 --- a/fr/learn/best_practices/file_io/index.html +++ b/fr/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/floating_point/index.html b/fr/learn/best_practices/floating_point/index.html index d4cccb627d42..a572e9ab6414 100644 --- a/fr/learn/best_practices/floating_point/index.html +++ b/fr/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/index.html b/fr/learn/best_practices/index.html index a01d6f076876..4b1f45dcb8d2 100644 --- a/fr/learn/best_practices/index.html +++ b/fr/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/integer_division/index.html b/fr/learn/best_practices/integer_division/index.html index 3cea7250887f..f886c35d6578 100644 --- a/fr/learn/best_practices/integer_division/index.html +++ b/fr/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/modules_programs/index.html b/fr/learn/best_practices/modules_programs/index.html index 7dee2f200582..e9e5a8384f63 100644 --- a/fr/learn/best_practices/modules_programs/index.html +++ b/fr/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/multidim_arrays/index.html b/fr/learn/best_practices/multidim_arrays/index.html index 9cf8f4112538..274b6633ade1 100644 --- a/fr/learn/best_practices/multidim_arrays/index.html +++ b/fr/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/style_guide/index.html b/fr/learn/best_practices/style_guide/index.html index 78c1a414525b..b307b10d3786 100644 --- a/fr/learn/best_practices/style_guide/index.html +++ b/fr/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/best_practices/type_casting/index.html b/fr/learn/best_practices/type_casting/index.html index 2fae43eff223..506414c1afb3 100644 --- a/fr/learn/best_practices/type_casting/index.html +++ b/fr/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/build_tools/index.html b/fr/learn/building_programs/build_tools/index.html index de3d3a861986..758138a8557f 100644 --- a/fr/learn/building_programs/build_tools/index.html +++ b/fr/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/compiling_source/index.html b/fr/learn/building_programs/compiling_source/index.html index 5b7adaad007d..3e6efd286e05 100644 --- a/fr/learn/building_programs/compiling_source/index.html +++ b/fr/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/distributing/index.html b/fr/learn/building_programs/distributing/index.html index 9ec2794f955f..5ba988f27be3 100644 --- a/fr/learn/building_programs/distributing/index.html +++ b/fr/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/include_files/index.html b/fr/learn/building_programs/include_files/index.html index 777fee70ccfd..8d24eb54eae0 100644 --- a/fr/learn/building_programs/include_files/index.html +++ b/fr/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/index.html b/fr/learn/building_programs/index.html index d248d37f72f2..bce67cf20cc3 100644 --- a/fr/learn/building_programs/index.html +++ b/fr/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/linking_pieces/index.html b/fr/learn/building_programs/linking_pieces/index.html index 58aaf416741a..86200a7655ed 100644 --- a/fr/learn/building_programs/linking_pieces/index.html +++ b/fr/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/managing_libraries/index.html b/fr/learn/building_programs/managing_libraries/index.html index 8e9f89c7881e..c9785d283169 100644 --- a/fr/learn/building_programs/managing_libraries/index.html +++ b/fr/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/project_make/index.html b/fr/learn/building_programs/project_make/index.html index db2fec99e961..17cf8b5f29b5 100644 --- a/fr/learn/building_programs/project_make/index.html +++ b/fr/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/building_programs/runtime_libraries/index.html b/fr/learn/building_programs/runtime_libraries/index.html index b3865932c48d..e9d5cd5881a2 100644 --- a/fr/learn/building_programs/runtime_libraries/index.html +++ b/fr/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/index.html b/fr/learn/index.html index c77c3f7f781f..28ee7d818cac 100644 --- a/fr/learn/index.html +++ b/fr/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/array/index.html b/fr/learn/intrinsics/array/index.html index bc359c3c9049..7b39b3ac4b58 100644 --- a/fr/learn/intrinsics/array/index.html +++ b/fr/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/bit/index.html b/fr/learn/intrinsics/bit/index.html index 433b269b2c4d..e9d96e20827b 100644 --- a/fr/learn/intrinsics/bit/index.html +++ b/fr/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/cfi/index.html b/fr/learn/intrinsics/cfi/index.html index 85bbc5bd5cb0..8180a75de2d8 100644 --- a/fr/learn/intrinsics/cfi/index.html +++ b/fr/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/character/index.html b/fr/learn/intrinsics/character/index.html index acb2a72f4770..7a6a7448a760 100644 --- a/fr/learn/intrinsics/character/index.html +++ b/fr/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/compiler/index.html b/fr/learn/intrinsics/compiler/index.html index 232514ac3c13..ff3f94c136c6 100644 --- a/fr/learn/intrinsics/compiler/index.html +++ b/fr/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/index.html b/fr/learn/intrinsics/index.html index 1e2eb6c0bb4c..2c705073c480 100644 --- a/fr/learn/intrinsics/index.html +++ b/fr/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/math/index.html b/fr/learn/intrinsics/math/index.html index d44953a7eb9c..d3bc748d0350 100644 --- a/fr/learn/intrinsics/math/index.html +++ b/fr/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/model/index.html b/fr/learn/intrinsics/model/index.html index 5e8219541fba..569b0650ed3b 100644 --- a/fr/learn/intrinsics/model/index.html +++ b/fr/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/numeric/index.html b/fr/learn/intrinsics/numeric/index.html index 1d86942be231..8535d73531b4 100644 --- a/fr/learn/intrinsics/numeric/index.html +++ b/fr/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/parallel/index.html b/fr/learn/intrinsics/parallel/index.html index c3bca2b5809a..2cbbde06de4b 100644 --- a/fr/learn/intrinsics/parallel/index.html +++ b/fr/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/state/index.html b/fr/learn/intrinsics/state/index.html index fbcb9e33ea40..d7a503df9d15 100644 --- a/fr/learn/intrinsics/state/index.html +++ b/fr/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/system/index.html b/fr/learn/intrinsics/system/index.html index 3f39d7ac1a16..8bf753d546a7 100644 --- a/fr/learn/intrinsics/system/index.html +++ b/fr/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/transform/index.html b/fr/learn/intrinsics/transform/index.html index d9d9f08022eb..8b08d02be8bf 100644 --- a/fr/learn/intrinsics/transform/index.html +++ b/fr/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/intrinsics/type/index.html b/fr/learn/intrinsics/type/index.html index a34c0a855171..44cf799c0033 100644 --- a/fr/learn/intrinsics/type/index.html +++ b/fr/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/choose_compiler/index.html b/fr/learn/os_setup/choose_compiler/index.html index 8ecc1a3be3df..d2c8f1473a7b 100644 --- a/fr/learn/os_setup/choose_compiler/index.html +++ b/fr/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/ides/index.html b/fr/learn/os_setup/ides/index.html index 00d14721c37f..7e6bf3737237 100644 --- a/fr/learn/os_setup/ides/index.html +++ b/fr/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/index.html b/fr/learn/os_setup/index.html index 8a281bccf8cc..21a1088f4258 100644 --- a/fr/learn/os_setup/index.html +++ b/fr/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/install_gfortran/index.html b/fr/learn/os_setup/install_gfortran/index.html index b30cca483ee3..d447f7569031 100644 --- a/fr/learn/os_setup/install_gfortran/index.html +++ b/fr/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/text_editors/index.html b/fr/learn/os_setup/text_editors/index.html index d52188419b77..87f5ef7d1e1c 100644 --- a/fr/learn/os_setup/text_editors/index.html +++ b/fr/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/os_setup/tips/index.html b/fr/learn/os_setup/tips/index.html index 55535ae49cf5..807715ec6f53 100644 --- a/fr/learn/os_setup/tips/index.html +++ b/fr/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/arrays_strings/index.html b/fr/learn/quickstart/arrays_strings/index.html index 86e2624150a5..460e44e67bec 100644 --- a/fr/learn/quickstart/arrays_strings/index.html +++ b/fr/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/derived_types/index.html b/fr/learn/quickstart/derived_types/index.html index 7cfd36119c7f..e99ddd029b51 100644 --- a/fr/learn/quickstart/derived_types/index.html +++ b/fr/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/hello_world/index.html b/fr/learn/quickstart/hello_world/index.html index e3fca90d8be6..3d11fe98c060 100644 --- a/fr/learn/quickstart/hello_world/index.html +++ b/fr/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/index.html b/fr/learn/quickstart/index.html index e4f0e08e0e28..bcf9a87a605b 100644 --- a/fr/learn/quickstart/index.html +++ b/fr/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/operators_control_flow/index.html b/fr/learn/quickstart/operators_control_flow/index.html index e7d5004d8f40..edbb6a672997 100644 --- a/fr/learn/quickstart/operators_control_flow/index.html +++ b/fr/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/organising_code/index.html b/fr/learn/quickstart/organising_code/index.html index e2663a155454..7cdb36cc87c2 100644 --- a/fr/learn/quickstart/organising_code/index.html +++ b/fr/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/learn/quickstart/variables/index.html b/fr/learn/quickstart/variables/index.html index 5994e03151b1..30fe63c6f6d9 100644 --- a/fr/learn/quickstart/variables/index.html +++ b/fr/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2020/02-28-J3-february-meeting/index.html b/fr/news/2020/02-28-J3-february-meeting/index.html index aa8709528fb1..b184ced515de 100644 --- a/fr/news/2020/02-28-J3-february-meeting/index.html +++ b/fr/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2020/04-06-Announcing-FortranCon-2020/index.html b/fr/news/2020/04-06-Announcing-FortranCon-2020/index.html index ca0d5eba0a45..3a0c8f26d3d9 100644 --- a/fr/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/fr/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2020/04-18-Fortran-Webinar/index.html b/fr/news/2020/04-18-Fortran-Webinar/index.html index 35354be3a61f..8f6bed0cf5e2 100644 --- a/fr/news/2020/04-18-Fortran-Webinar/index.html +++ b/fr/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/fr/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index e9cd3309e737..11e0b30d1f78 100644 --- a/fr/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/fr/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/fr/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 821bacf4c62f..8eb6179097c0 100644 --- a/fr/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/fr/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -426,7 +429,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/fr/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index f80ba1f00626..8679b7557b5c 100644 --- a/fr/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/fr/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Laurence Kedward , @@ -426,7 +429,7 @@

- Laurence Kedward + Milan Curcic diff --git a/fr/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/fr/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index e62b555bd24e..d86526987e65 100644 --- a/fr/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/fr/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -426,21 +429,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/fr/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 4c4f7d3693fb..1829b5fe8661 100644 --- a/fr/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/fr/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -440,21 +443,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König diff --git a/fr/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/fr/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index a08de7073e0f..308869a80754 100644 --- a/fr/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/fr/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -440,14 +443,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/fr/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 8679acf8ec39..0953ee574f10 100644 --- a/fr/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/fr/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -440,7 +443,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -454,14 +457,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas diff --git a/fr/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/fr/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index 55f6b6587942..da56d5245c26 100644 --- a/fr/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/fr/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2020/index.html b/fr/news/2020/index.html index 29edfcf1ae5e..04043df0493e 100644 --- a/fr/news/2020/index.html +++ b/fr/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,28 +522,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -600,21 +603,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -628,7 +631,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -642,14 +645,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -709,21 +712,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -737,14 +740,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -804,21 +807,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -832,21 +835,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -906,7 +909,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -920,21 +923,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -994,7 +997,7 @@

- Milan Curcic + Laurence Kedward , @@ -1008,7 +1011,7 @@

- Laurence Kedward + Milan Curcic @@ -1068,7 +1071,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -1082,7 +1085,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/fr/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index dd14ce37f350..02c17fa5011d 100644 --- a/fr/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/fr/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -447,7 +450,7 @@

- Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/fr/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index 47f85357771c..f218d31df08a 100644 --- a/fr/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/fr/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/fr/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 86cc7e0571a0..e0d58bfa2230 100644 --- a/fr/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/fr/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic diff --git a/fr/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/fr/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index aa10200aba28..ad2f81287c80 100644 --- a/fr/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/fr/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward diff --git a/fr/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/fr/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index d42bbed55394..b4c41c16954c 100644 --- a/fr/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/fr/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby diff --git a/fr/news/2021/04-20-First-Year/index.html b/fr/news/2021/04-20-First-Year/index.html index 4debc71681f0..aad7f3f8576a 100644 --- a/fr/news/2021/04-20-First-Year/index.html +++ b/fr/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic diff --git a/fr/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/fr/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 1cec8f34bd66..76be0e3d7189 100644 --- a/fr/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/fr/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby diff --git a/fr/news/2021/05-18-Welcome-GSoC-students/index.html b/fr/news/2021/05-18-Welcome-GSoC-students/index.html index 3c9c63766934..e311d4672498 100644 --- a/fr/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/fr/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , diff --git a/fr/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/fr/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 0746c4ed7107..d913c4a0ce2c 100644 --- a/fr/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/fr/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert diff --git a/fr/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/fr/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index fe23550ae090..6b64df336f24 100644 --- a/fr/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/fr/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Zachary Moon , @@ -426,14 +429,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , diff --git a/fr/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/fr/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index ef1bfa15d6a0..ad6591384e99 100644 --- a/fr/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/fr/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Laurence Kedward , @@ -426,7 +429,7 @@

- Laurence Kedward + Milan Curcic diff --git a/fr/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/fr/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 096b2fae9885..2139b2b91c79 100644 --- a/fr/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/fr/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -433,7 +436,7 @@

- Alexis Perry-Holby + Sebastian Ehlert diff --git a/fr/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/fr/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 1fffdc66de27..bf360b402766 100644 --- a/fr/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/fr/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , diff --git a/fr/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/fr/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index a4a1318f9546..6428a888627d 100644 --- a/fr/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/fr/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/fr/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/fr/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 4a670d984f01..613f08571d9a 100644 --- a/fr/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/fr/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/fr/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 994fbe4edb94..ed7f9474751b 100644 --- a/fr/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/fr/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2021/index.html b/fr/news/2021/index.html index 65a4b59fcecb..ebac2f052643 100644 --- a/fr/news/2021/index.html +++ b/fr/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -690,21 +693,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -764,14 +767,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -838,14 +841,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -859,7 +862,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -919,7 +922,7 @@

- Milan Curcic + Laurence Kedward , @@ -933,7 +936,7 @@

- Laurence Kedward + Milan Curcic @@ -993,7 +996,7 @@

- Milan Curcic + Zachary Moon , @@ -1007,14 +1010,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1081,28 +1084,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1169,21 +1172,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1259,35 +1262,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1347,28 +1350,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1434,35 +1437,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1522,56 +1525,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -1631,21 +1634,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -1712,28 +1715,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -1800,21 +1803,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -1828,7 +1831,7 @@

- Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/fr/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 404753d81514..b7f4e1cf326c 100644 --- a/fr/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/fr/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -440,7 +443,7 @@

- Sebastian Ehlert + Alexis Perry-Holby diff --git a/fr/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/fr/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index 44ca03ce177a..8d542ce1bce6 100644 --- a/fr/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/fr/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby diff --git a/fr/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/fr/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 8044bbb9bffa..76f4347eeca5 100644 --- a/fr/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/fr/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic diff --git a/fr/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/fr/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 4f561d175481..85946cd5eda5 100644 --- a/fr/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/fr/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/fr/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/fr/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index dd10cdbbeeaa..2e9d6c1716bc 100644 --- a/fr/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/fr/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh diff --git a/fr/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/fr/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index 3aa4bd850b25..d5dd665024b5 100644 --- a/fr/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/fr/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic diff --git a/fr/news/2022/index.html b/fr/news/2022/index.html index 6e27d9282f52..46db1efc8f85 100644 --- a/fr/news/2022/index.html +++ b/fr/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -903,21 +906,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Sebastian Ehlert + Alexis Perry-Holby diff --git a/fr/news/archive/index.html b/fr/news/archive/index.html index 6db800791b6d..e0f04fd86e89 100644 --- a/fr/news/archive/index.html +++ b/fr/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/atom.xml b/fr/news/atom.xml index 9b624cbc045c..17fdcf0e6c3e 100644 --- a/fr/news/atom.xml +++ b/fr/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:12:00.708400+00:00 + 2023-05-22T09:17:34.011333+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Giannis Nikiteas + Gagandeep Singh <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -51,7 +51,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: April 2022 2022-04-07T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Gagandeep Singh + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Sebastian Ehlert + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -191,7 +191,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Alexis Perry-Holby + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Laurence Kedward + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Laurence Kedward + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Laurence Kedward + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we’ve had several updates to t First year of the Fortran website 2021-04-20T00:00:00+00:00 - Laurence Kedward + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Laurence Kedward + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Damian Rouson + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Laurence Kedward + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Laurence Kedward + Jeremie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - and Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - and Laurence Kedward + Thomas König <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Laurence Kedward + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - Laurence Kedward + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Milan Curcic and Ondřej Čertík + Jeremie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/fr/news/author/alexis-perry-holby/index.html b/fr/news/author/alexis-perry-holby/index.html index 95b3d740e44e..8b6e3e8c1f04 100644 --- a/fr/news/author/alexis-perry-holby/index.html +++ b/fr/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -903,21 +906,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -1073,21 +1076,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1147,14 +1150,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -1221,14 +1224,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -1242,7 +1245,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1302,35 +1305,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1390,35 +1393,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1485,28 +1488,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/author/and-jeremie-vandenplas/index.html b/fr/news/author/and-jeremie-vandenplas/index.html index c772901a4d0b..4e4fa7c1668d 100644 --- a/fr/news/author/and-jeremie-vandenplas/index.html +++ b/fr/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Laurence Kedward , @@ -526,7 +529,7 @@

- Laurence Kedward + Milan Curcic diff --git a/fr/news/author/and-laurence-kedward/index.html b/fr/news/author/and-laurence-kedward/index.html index 2e971ed69579..2995b8850ba6 100644 --- a/fr/news/author/and-laurence-kedward/index.html +++ b/fr/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -540,14 +543,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -607,21 +610,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -635,21 +638,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König diff --git a/fr/news/author/arjen-markus-and-gary-klimowicz/index.html b/fr/news/author/arjen-markus-and-gary-klimowicz/index.html index 439d61e6a596..973e0709f9e8 100644 --- a/fr/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/fr/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -526,21 +529,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/author/arjen-markus/index.html b/fr/news/author/arjen-markus/index.html index fa5eedb8591c..2b7f9ab6f8fc 100644 --- a/fr/news/author/arjen-markus/index.html +++ b/fr/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -609,56 +612,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward diff --git a/fr/news/author/brad-richardson/index.html b/fr/news/author/brad-richardson/index.html index 9f83372e4998..f8d87afc05cc 100644 --- a/fr/news/author/brad-richardson/index.html +++ b/fr/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -609,28 +612,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -696,56 +699,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -805,21 +808,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -833,7 +836,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -847,14 +850,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -914,21 +917,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -942,14 +945,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -1009,21 +1012,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -1037,21 +1040,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -1111,7 +1114,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -1125,7 +1128,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/news/author/damian-rouson/index.html b/fr/news/author/damian-rouson/index.html index 354631aff021..60f1687b5283 100644 --- a/fr/news/author/damian-rouson/index.html +++ b/fr/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward diff --git a/fr/news/author/gagandeep-singh/index.html b/fr/news/author/gagandeep-singh/index.html index 06f97c3c393c..ea582e2cf9af 100644 --- a/fr/news/author/gagandeep-singh/index.html +++ b/fr/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -593,35 +596,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby diff --git a/fr/news/author/gary-klimowicz/index.html b/fr/news/author/gary-klimowicz/index.html index 84e2581d43e0..84d6ebff9534 100644 --- a/fr/news/author/gary-klimowicz/index.html +++ b/fr/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -547,7 +550,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -615,28 +618,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -696,21 +699,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -724,7 +727,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -738,14 +741,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -805,21 +808,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -833,14 +836,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -900,21 +903,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -928,21 +931,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König diff --git a/fr/news/author/giannis-nikiteas/index.html b/fr/news/author/giannis-nikiteas/index.html index 527496528431..671480b446c4 100644 --- a/fr/news/author/giannis-nikiteas/index.html +++ b/fr/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh diff --git a/fr/news/author/henil-panchal/index.html b/fr/news/author/henil-panchal/index.html index 038fadde201c..33392d7be5f4 100644 --- a/fr/news/author/henil-panchal/index.html +++ b/fr/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic diff --git a/fr/news/author/index.html b/fr/news/author/index.html index 0a1dd363c50a..18dff6740271 100644 --- a/fr/news/author/index.html +++ b/fr/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/author/ivan-pribec/index.html b/fr/news/author/ivan-pribec/index.html index fbf7eaddcc5e..ef713f6a4f96 100644 --- a/fr/news/author/ivan-pribec/index.html +++ b/fr/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -540,7 +543,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -554,14 +557,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas diff --git a/fr/news/author/jeremie-vandenplas/index.html b/fr/news/author/jeremie-vandenplas/index.html index 2a1ba83eab9f..2958a173d92b 100644 --- a/fr/news/author/jeremie-vandenplas/index.html +++ b/fr/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -600,21 +603,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -628,7 +631,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -689,35 +692,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -793,28 +796,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -881,21 +884,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -909,7 +912,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -977,28 +980,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -1058,21 +1061,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -1086,14 +1089,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -1153,21 +1156,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -1181,21 +1184,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -1255,7 +1258,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -1269,21 +1272,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/author/laurence-kedward/index.html b/fr/news/author/laurence-kedward/index.html index 41fdb59c3ae5..52e1d4eea9dd 100644 --- a/fr/news/author/laurence-kedward/index.html +++ b/fr/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -609,14 +612,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -683,7 +686,7 @@

- Milan Curcic + Laurence Kedward , @@ -697,7 +700,7 @@

- Laurence Kedward + Milan Curcic @@ -757,7 +760,7 @@

- Milan Curcic + Zachary Moon , @@ -771,14 +774,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -845,28 +848,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -933,21 +936,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1023,35 +1026,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1111,28 +1114,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1198,35 +1201,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1286,56 +1289,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -1395,21 +1398,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -1476,28 +1479,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -1564,21 +1567,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -1592,7 +1595,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -1660,28 +1663,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -1741,21 +1744,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -1769,7 +1772,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -1783,14 +1786,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -1850,7 +1853,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -1864,21 +1867,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -1938,7 +1941,7 @@

- Milan Curcic + Laurence Kedward , @@ -1952,7 +1955,7 @@

- Laurence Kedward + Milan Curcic diff --git a/fr/news/author/marshall-ward/index.html b/fr/news/author/marshall-ward/index.html index e79db9406861..ad2f9162a75f 100644 --- a/fr/news/author/marshall-ward/index.html +++ b/fr/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward diff --git a/fr/news/author/milan-curcic-and-ondrej-certik/index.html b/fr/news/author/milan-curcic-and-ondrej-certik/index.html index e147a985fe6d..2f9d1705770d 100644 --- a/fr/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/fr/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -526,7 +529,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/news/author/milan-curcic/index.html b/fr/news/author/milan-curcic/index.html index 4fb4020d1792..ea018571aa37 100644 --- a/fr/news/author/milan-curcic/index.html +++ b/fr/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -903,21 +906,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -992,35 +995,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -1170,21 +1173,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1244,14 +1247,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -1265,7 +1268,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1325,7 +1328,7 @@

- Milan Curcic + Laurence Kedward , @@ -1339,7 +1342,7 @@

- Laurence Kedward + Milan Curcic @@ -1399,7 +1402,7 @@

- Milan Curcic + Zachary Moon , @@ -1413,14 +1416,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1487,28 +1490,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1575,21 +1578,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1665,35 +1668,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1753,28 +1756,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1840,35 +1843,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1928,56 +1931,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -2037,21 +2040,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -2118,28 +2121,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -2206,21 +2209,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -2234,7 +2237,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -2302,28 +2305,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -2383,21 +2386,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -2411,7 +2414,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -2425,14 +2428,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -2492,21 +2495,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2520,14 +2523,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -2587,21 +2590,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2615,21 +2618,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -2689,7 +2692,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -2703,21 +2706,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -2777,7 +2780,7 @@

- Milan Curcic + Laurence Kedward , @@ -2791,7 +2794,7 @@

- Laurence Kedward + Milan Curcic diff --git a/fr/news/author/ondrej-certik-and-zach-jibben/index.html b/fr/news/author/ondrej-certik-and-zach-jibben/index.html index b0aa559aa3d0..8b98108c2400 100644 --- a/fr/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/fr/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/author/ondrej-certik/index.html b/fr/news/author/ondrej-certik/index.html index aad98d910a50..3943806c3dda 100644 --- a/fr/news/author/ondrej-certik/index.html +++ b/fr/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,21 +596,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -667,21 +670,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -695,7 +698,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -756,35 +759,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -860,21 +863,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -934,14 +937,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -1008,14 +1011,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -1029,7 +1032,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1089,7 +1092,7 @@

- Milan Curcic + Laurence Kedward , @@ -1103,7 +1106,7 @@

- Laurence Kedward + Milan Curcic @@ -1163,7 +1166,7 @@

- Milan Curcic + Zachary Moon , @@ -1177,14 +1180,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1251,28 +1254,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1339,21 +1342,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1429,35 +1432,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1517,28 +1520,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1604,35 +1607,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1692,56 +1695,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -1801,21 +1804,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -1882,21 +1885,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -1910,7 +1913,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -1978,28 +1981,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -2059,21 +2062,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -2087,7 +2090,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -2101,14 +2104,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -2168,21 +2171,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2196,14 +2199,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -2263,21 +2266,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2291,21 +2294,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -2365,7 +2368,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -2379,21 +2382,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas diff --git a/fr/news/author/sebastian-ehlert/index.html b/fr/news/author/sebastian-ehlert/index.html index f2376d59fb06..4df588a23916 100644 --- a/fr/news/author/sebastian-ehlert/index.html +++ b/fr/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -600,21 +603,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -628,7 +631,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -689,35 +692,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -867,21 +870,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -941,14 +944,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -962,7 +965,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1022,7 +1025,7 @@

- Milan Curcic + Zachary Moon , @@ -1036,14 +1039,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1110,28 +1113,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1198,21 +1201,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1288,35 +1291,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1376,35 +1379,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1464,56 +1467,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -1580,28 +1583,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -1668,21 +1671,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -1696,7 +1699,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -1757,21 +1760,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -1785,7 +1788,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -1799,14 +1802,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas diff --git a/fr/news/author/thomas-konig/index.html b/fr/news/author/thomas-konig/index.html index bd31d33b8b1c..afee96081d9b 100644 --- a/fr/news/author/thomas-konig/index.html +++ b/fr/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -540,21 +543,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König diff --git a/fr/news/author/zachary-moon/index.html b/fr/news/author/zachary-moon/index.html index 1a165a4a2bff..ff0ccc441450 100644 --- a/fr/news/author/zachary-moon/index.html +++ b/fr/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Zachary Moon , @@ -526,14 +529,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , diff --git a/fr/news/category/index.html b/fr/news/category/index.html index c8cd9aaaf4c5..2a2992c2db3f 100644 --- a/fr/news/category/index.html +++ b/fr/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/category/newsletter/index.html b/fr/news/category/newsletter/index.html index fbdb4b209e14..6a697cfba0b0 100644 --- a/fr/news/category/newsletter/index.html +++ b/fr/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -903,21 +906,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -992,35 +995,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -1170,21 +1173,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1244,14 +1247,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -1318,14 +1321,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -1339,7 +1342,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1399,7 +1402,7 @@

- Milan Curcic + Laurence Kedward , @@ -1413,7 +1416,7 @@

- Laurence Kedward + Milan Curcic @@ -1473,7 +1476,7 @@

- Milan Curcic + Zachary Moon , @@ -1487,14 +1490,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1561,28 +1564,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1649,21 +1652,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1739,35 +1742,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1827,28 +1830,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1914,35 +1917,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -2002,56 +2005,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -2111,21 +2114,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -2192,28 +2195,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -2280,21 +2283,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -2308,7 +2311,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -2376,28 +2379,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -2457,21 +2460,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -2485,7 +2488,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -2499,14 +2502,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -2566,21 +2569,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2594,14 +2597,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -2661,21 +2664,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2689,21 +2692,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -2763,7 +2766,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -2777,21 +2780,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -2851,7 +2854,7 @@

- Milan Curcic + Laurence Kedward , @@ -2865,7 +2868,7 @@

- Laurence Kedward + Milan Curcic @@ -2925,7 +2928,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -2939,7 +2942,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/news/drafts/index.html b/fr/news/drafts/index.html index 4064020a8f68..b26df5bfda91 100644 --- a/fr/news/drafts/index.html +++ b/fr/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/news/index.html b/fr/news/index.html index b771f4a73d77..f9bf1583d4ff 100644 --- a/fr/news/index.html +++ b/fr/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Henil Panchal , - Henil Panchal + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , - Alexis Perry-Holby + Milan Curcic , - Giannis Nikiteas + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic @@ -815,35 +818,35 @@

- Milan Curcic + Gagandeep Singh , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Jérémie Vandenplas , - Gagandeep Singh + Alexis Perry-Holby @@ -903,21 +906,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -931,7 +934,7 @@

- Sebastian Ehlert + Alexis Perry-Holby @@ -992,35 +995,35 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -1170,21 +1173,21 @@

- Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1244,14 +1247,14 @@

- Alexis Perry-Holby + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby , @@ -1318,14 +1321,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Sebastian Ehlert + Ondřej Čertík , @@ -1339,7 +1342,7 @@

- Alexis Perry-Holby + Sebastian Ehlert @@ -1399,7 +1402,7 @@

- Milan Curcic + Laurence Kedward , @@ -1413,7 +1416,7 @@

- Laurence Kedward + Milan Curcic @@ -1473,7 +1476,7 @@

- Milan Curcic + Zachary Moon , @@ -1487,14 +1490,14 @@

- Sebastian Ehlert + Milan Curcic , - Zachary Moon + Sebastian Ehlert , @@ -1561,28 +1564,28 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1649,21 +1652,21 @@

- Milan Curcic + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , @@ -1739,35 +1742,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -1827,28 +1830,28 @@

- Brad Richardson + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic @@ -1914,35 +1917,35 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Laurence Kedward + Alexis Perry-Holby @@ -2002,56 +2005,56 @@

- Brad Richardson + Damian Rouson , - Milan Curcic + Brad Richardson , - Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Sebastian Ehlert + Ondřej Čertík , - Marshall Ward + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Damian Rouson + Laurence Kedward @@ -2111,21 +2114,21 @@

- Ondřej Čertík + Laurence Kedward , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Milan Curcic @@ -2192,28 +2195,28 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas @@ -2280,21 +2283,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , @@ -2308,7 +2311,7 @@

- Laurence Kedward + Jérémie Vandenplas @@ -2376,28 +2379,28 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , - Jérémie Vandenplas + Milan Curcic , - Laurence Kedward + Jérémie Vandenplas @@ -2457,21 +2460,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Ivan Pribec , @@ -2485,7 +2488,7 @@

- Jeremie Vandenplas + Milan Curcic , @@ -2499,14 +2502,14 @@

- Ivan Pribec + Laurence Kedward , - Laurence Kedward + Jeremie Vandenplas @@ -2566,21 +2569,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2594,14 +2597,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas @@ -2661,21 +2664,21 @@

- Brad Richardson + Gary Klimowicz , - Gary Klimowicz + Brad Richardson , - Milan Curcic + and Laurence Kedward , @@ -2689,21 +2692,21 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Thomas König @@ -2763,7 +2766,7 @@

- Milan Curcic + Arjen Markus and Gary Klimowicz , @@ -2777,21 +2780,21 @@

- Arjen Markus and Gary Klimowicz + Milan Curcic , - Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas @@ -2851,7 +2854,7 @@

- Milan Curcic + Laurence Kedward , @@ -2865,7 +2868,7 @@

- Laurence Kedward + Milan Curcic @@ -2925,7 +2928,7 @@

- Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , @@ -2939,7 +2942,7 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas diff --git a/fr/packages/data-types/index.html b/fr/packages/data-types/index.html index 8ab50964e6d1..89a6e05e13de 100644 --- a/fr/packages/data-types/index.html +++ b/fr/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/examples/index.html b/fr/packages/examples/index.html index 1fd178c38dea..53d328e4668c 100644 --- a/fr/packages/examples/index.html +++ b/fr/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/graphics/index.html b/fr/packages/graphics/index.html index 5dd9ec7b97df..f9d2b253f6d2 100644 --- a/fr/packages/graphics/index.html +++ b/fr/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/index.html b/fr/packages/index.html index 12fe07c4942b..47eaa0be99cf 100644 --- a/fr/packages/index.html +++ b/fr/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/interfaces/index.html b/fr/packages/interfaces/index.html index a00fe3ca13ad..c0d157bf8057 100644 --- a/fr/packages/interfaces/index.html +++ b/fr/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/io/index.html b/fr/packages/io/index.html index 5a05a0ca46dc..f799aab0a36e 100644 --- a/fr/packages/io/index.html +++ b/fr/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/libraries/index.html b/fr/packages/libraries/index.html index 018d8f601ac0..1292e56cf6c4 100644 --- a/fr/packages/libraries/index.html +++ b/fr/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/numerical/index.html b/fr/packages/numerical/index.html index ade5602dba53..034bba1fb71b 100644 --- a/fr/packages/numerical/index.html +++ b/fr/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/programming/index.html b/fr/packages/programming/index.html index ba1e5aac30f4..65ca65f5b8a2 100644 --- a/fr/packages/programming/index.html +++ b/fr/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/scientific/index.html b/fr/packages/scientific/index.html index c7504da7b755..107378a67db6 100644 --- a/fr/packages/scientific/index.html +++ b/fr/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/packages/strings/index.html b/fr/packages/strings/index.html index 77fa707a99f0..25eaea1feaa4 100644 --- a/fr/packages/strings/index.html +++ b/fr/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/roadmap/index.html b/fr/roadmap/index.html index cb561d06bb87..c0af3ddf41f2 100644 --- a/fr/roadmap/index.html +++ b/fr/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/fr/search/index.html b/fr/search/index.html index 5f0081740ecf..6bc07e83bbc1 100644 --- a/fr/search/index.html +++ b/fr/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/genindex/index.html b/genindex/index.html new file mode 100644 index 000000000000..3173a591e64d --- /dev/null +++ b/genindex/index.html @@ -0,0 +1,440 @@ + + + + + + + + Index — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ +
+ + + + +
+ +
+ + +

Index

+ +
+ +
+ + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/index.html b/index.html index bca423700f1f..bac7daa08750 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,673 @@ - - - - - + + + + + + + + The Fortran Programming Language — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

The Fortran Programming Language#

+
+

Fortran
High-performance parallel programming language

+
+ +
+

Features

+
+
+

High performance

+
+

Fortran has been designed from the ground up for computationally intensive applications in science and engineering. Mature and battle-tested compilers and libraries allow you to write code that runs close to the metal, fast.

+
+

Statically and strongly typed

+
+

Fortran is statically and strongly typed, which allows the compiler to catch many programming errors early on for you. This also allows the compiler to generate efficient binary code.

+
+

Easy to learn and use

+
+

Fortran is a relatively small language that is surprisingly easy to learn and use. Expressing most mathematical and arithmetic operations over large arrays is as simple as writing them as equations on a whiteboard.

+
+

Versatile

+
+

Fortran allows you to write code in a style that best fits your problem: imperative, procedural, array-oriented, object-oriented, or functional.

+
+

Natively parallel

+
+

Fortran is a natively parallel programming language with intuitive array-like syntax to communicate data between CPUs. You can run almost the same code on a single CPU, on a shared-memory multicore system, or on a distributed-memory HPC or cloud-based system. Coarrays, teams, events, and collective subroutines allow you to express different parallel programming patterns that best fit your problem at hand.

+
+

FAQ

+
+
+

What is the status of Fortran?

+
+

Fortran is mature and under active development. +The latest revision of the language is +Fortran 2018. +The next revision, +Fortran 2023, is planned for +release in 2023. +There are over a dozen open source and proprietary +Fortran compilers. +Further, open source projects like the +Standard Library +and the Fortran Package Manager are +under active development.

+
+

What is Fortran used for?

+
+

Fortran is mostly used in domains that adopted computation early–science and engineering. These include numerical weather and ocean prediction, computational fluid dynamics, applied math, statistics, and finance. Fortran is the dominant language of High Performance Computing and is used to benchmark the fastest supercomputers in the world.

+
+

Should I use Fortran for my new project?

+
+

If you’re writing a program or a library to perform fast arithmetic computation over large numeric arrays, Fortran is the optimal tool for the job.

+
+

Join us!

+

Mailing list

+

Subscribe to our mailing list +to discuss anything Fortran related, announce Fortran projects, discuss development +of core fortran-lang.org projects (stdlib, fpm), and get +the latest news. +

+

Discourse

+

+Join the discussion about all things Fortran on the +fortran-lang discourse. +

+

Twitter

+ + +

RSS feed

+

RSS clients can follow the RSS feed.

+

Open source

+

+Contribute code, report bugs and request features at +GitHub. +

+
+
+

Make Fortran better

+
+
+
+
+
+
+
+

Write proposals

+
+

Have an idea about how to improve the language? You can write new proposals or contribute to existing proposals to the Fortran Standard Committee on +GitHub.

+
+
+
+
+
+
+
+

Develop tools

+
+

You can also help make Fortran better by contributing to its suite of tools, such as Standard Library, Package Manager, this website.

+
+
+
+
+
+
+
+
+
+
+
+

Write Fortran software

+
+

Or just write Fortran software for your research, business, or schoolwork. You can learn how to get started here.

+
+
+
+
+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/ja/.doctrees/environment.pickle b/ja/.doctrees/environment.pickle index c4b63a07d901..b58f181cbae0 100644 Binary files a/ja/.doctrees/environment.pickle and b/ja/.doctrees/environment.pickle differ diff --git a/ja/community/contributing/index.html b/ja/community/contributing/index.html index dc912d628fba..cb2bd10a0bd8 100644 --- a/ja/community/contributing/index.html +++ b/ja/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/community/history/index.html b/ja/community/history/index.html index 2b2f23b13288..30ec4475adcd 100644 --- a/ja/community/history/index.html +++ b/ja/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/community/index.html b/ja/community/index.html index 316204b77b78..651b424c9c6f 100644 --- a/ja/community/index.html +++ b/ja/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/community/minibooks/index.html b/ja/community/minibooks/index.html index 7ff0312d8d65..2b721f86a922 100644 --- a/ja/community/minibooks/index.html +++ b/ja/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/community/packages/index.html b/ja/community/packages/index.html index 4374187ba508..27323fd74cf0 100644 --- a/ja/community/packages/index.html +++ b/ja/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/compilers/index.html b/ja/compilers/index.html index 8e28bd09a5f3..493f02daab2c 100644 --- a/ja/compilers/index.html +++ b/ja/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/genindex/index.html b/ja/genindex/index.html index efaec592e8e6..d250d0b73a3f 100644 --- a/ja/genindex/index.html +++ b/ja/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/index.html b/ja/index.html index 9225b5bc53d9..cccd3da0f906 100644 --- a/ja/index.html +++ b/ja/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/allocatable_arrays/index.html b/ja/learn/best_practices/allocatable_arrays/index.html index 8a15ac78d531..4d47f697b30a 100644 --- a/ja/learn/best_practices/allocatable_arrays/index.html +++ b/ja/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/arrays/index.html b/ja/learn/best_practices/arrays/index.html index 4eeeab5a1aa4..1f45ccc94881 100644 --- a/ja/learn/best_practices/arrays/index.html +++ b/ja/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/callbacks/index.html b/ja/learn/best_practices/callbacks/index.html index 85c85db6219c..cf2ee06dd62b 100644 --- a/ja/learn/best_practices/callbacks/index.html +++ b/ja/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/element_operations/index.html b/ja/learn/best_practices/element_operations/index.html index b935123caed0..1e06d72788ac 100644 --- a/ja/learn/best_practices/element_operations/index.html +++ b/ja/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/file_io/index.html b/ja/learn/best_practices/file_io/index.html index ff87cdbc748b..edbf191768e2 100644 --- a/ja/learn/best_practices/file_io/index.html +++ b/ja/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/floating_point/index.html b/ja/learn/best_practices/floating_point/index.html index 3f4f455e2a52..f0faf7de4024 100644 --- a/ja/learn/best_practices/floating_point/index.html +++ b/ja/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/index.html b/ja/learn/best_practices/index.html index 34bc9ae80904..e8408a7c66f7 100644 --- a/ja/learn/best_practices/index.html +++ b/ja/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/integer_division/index.html b/ja/learn/best_practices/integer_division/index.html index f3c76bc34fc1..5bc0cfd58bff 100644 --- a/ja/learn/best_practices/integer_division/index.html +++ b/ja/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/modules_programs/index.html b/ja/learn/best_practices/modules_programs/index.html index 3cea1f6364a5..75e8ff339b48 100644 --- a/ja/learn/best_practices/modules_programs/index.html +++ b/ja/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/multidim_arrays/index.html b/ja/learn/best_practices/multidim_arrays/index.html index 9997313bb590..af0e32ea79eb 100644 --- a/ja/learn/best_practices/multidim_arrays/index.html +++ b/ja/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/style_guide/index.html b/ja/learn/best_practices/style_guide/index.html index d3293c112c76..6e1fb0ca5199 100644 --- a/ja/learn/best_practices/style_guide/index.html +++ b/ja/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/best_practices/type_casting/index.html b/ja/learn/best_practices/type_casting/index.html index e77794f56924..45e3202fcb0e 100644 --- a/ja/learn/best_practices/type_casting/index.html +++ b/ja/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/build_tools/index.html b/ja/learn/building_programs/build_tools/index.html index bcd984b95dcd..2456035cb8ea 100644 --- a/ja/learn/building_programs/build_tools/index.html +++ b/ja/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/compiling_source/index.html b/ja/learn/building_programs/compiling_source/index.html index 84705e551788..ad5130599ca2 100644 --- a/ja/learn/building_programs/compiling_source/index.html +++ b/ja/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/distributing/index.html b/ja/learn/building_programs/distributing/index.html index 8bf8dd5c4cb7..df52ff8e52ca 100644 --- a/ja/learn/building_programs/distributing/index.html +++ b/ja/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/include_files/index.html b/ja/learn/building_programs/include_files/index.html index eb50449e9950..6161554a0d9d 100644 --- a/ja/learn/building_programs/include_files/index.html +++ b/ja/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/index.html b/ja/learn/building_programs/index.html index fa3f72dbb083..d59a357700df 100644 --- a/ja/learn/building_programs/index.html +++ b/ja/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/linking_pieces/index.html b/ja/learn/building_programs/linking_pieces/index.html index e0fb29beb692..dd981534bed1 100644 --- a/ja/learn/building_programs/linking_pieces/index.html +++ b/ja/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/managing_libraries/index.html b/ja/learn/building_programs/managing_libraries/index.html index 812488f91449..03add21adebc 100644 --- a/ja/learn/building_programs/managing_libraries/index.html +++ b/ja/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/project_make/index.html b/ja/learn/building_programs/project_make/index.html index ddae519779f6..ea36355113a5 100644 --- a/ja/learn/building_programs/project_make/index.html +++ b/ja/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/building_programs/runtime_libraries/index.html b/ja/learn/building_programs/runtime_libraries/index.html index 2e9a34649893..2a83c7b6ba36 100644 --- a/ja/learn/building_programs/runtime_libraries/index.html +++ b/ja/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/index.html b/ja/learn/index.html index d3abdba22b07..a61026314798 100644 --- a/ja/learn/index.html +++ b/ja/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/array/index.html b/ja/learn/intrinsics/array/index.html index e02edbdcf976..081188178c8d 100644 --- a/ja/learn/intrinsics/array/index.html +++ b/ja/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/bit/index.html b/ja/learn/intrinsics/bit/index.html index f10e6ad8b7dd..b6cc53b29970 100644 --- a/ja/learn/intrinsics/bit/index.html +++ b/ja/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/cfi/index.html b/ja/learn/intrinsics/cfi/index.html index b5a9426224bc..9c5e13e3d381 100644 --- a/ja/learn/intrinsics/cfi/index.html +++ b/ja/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/character/index.html b/ja/learn/intrinsics/character/index.html index 67c191d79b9b..ae91ab8d0717 100644 --- a/ja/learn/intrinsics/character/index.html +++ b/ja/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/compiler/index.html b/ja/learn/intrinsics/compiler/index.html index 95f284c7fd26..1dc194138224 100644 --- a/ja/learn/intrinsics/compiler/index.html +++ b/ja/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/index.html b/ja/learn/intrinsics/index.html index e88bdd085174..2332e52ed828 100644 --- a/ja/learn/intrinsics/index.html +++ b/ja/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/math/index.html b/ja/learn/intrinsics/math/index.html index 230f9b5dbbc3..690a8b336e60 100644 --- a/ja/learn/intrinsics/math/index.html +++ b/ja/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/model/index.html b/ja/learn/intrinsics/model/index.html index 7e6e58c5ee07..ed8d5f41c6a1 100644 --- a/ja/learn/intrinsics/model/index.html +++ b/ja/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/numeric/index.html b/ja/learn/intrinsics/numeric/index.html index 5f6167db093f..a3b33e41fe81 100644 --- a/ja/learn/intrinsics/numeric/index.html +++ b/ja/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/parallel/index.html b/ja/learn/intrinsics/parallel/index.html index 56c4e52a32ff..6b2a0fbd3c23 100644 --- a/ja/learn/intrinsics/parallel/index.html +++ b/ja/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/state/index.html b/ja/learn/intrinsics/state/index.html index 471608c914b2..bac5004889ff 100644 --- a/ja/learn/intrinsics/state/index.html +++ b/ja/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/system/index.html b/ja/learn/intrinsics/system/index.html index e451d685f2ce..ea8f6ee598ff 100644 --- a/ja/learn/intrinsics/system/index.html +++ b/ja/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/transform/index.html b/ja/learn/intrinsics/transform/index.html index 5a99b0a46f26..3a13ec0bce27 100644 --- a/ja/learn/intrinsics/transform/index.html +++ b/ja/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/intrinsics/type/index.html b/ja/learn/intrinsics/type/index.html index d19909fcc3a7..036196e5a014 100644 --- a/ja/learn/intrinsics/type/index.html +++ b/ja/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/choose_compiler/index.html b/ja/learn/os_setup/choose_compiler/index.html index 5a2a20329c82..2f2274b88496 100644 --- a/ja/learn/os_setup/choose_compiler/index.html +++ b/ja/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/ides/index.html b/ja/learn/os_setup/ides/index.html index bf2539e1f55d..0ab018a4a5bf 100644 --- a/ja/learn/os_setup/ides/index.html +++ b/ja/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/index.html b/ja/learn/os_setup/index.html index 1b9195793692..01052cebd6e5 100644 --- a/ja/learn/os_setup/index.html +++ b/ja/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/install_gfortran/index.html b/ja/learn/os_setup/install_gfortran/index.html index 6b3fec96e602..da5adc30b6d1 100644 --- a/ja/learn/os_setup/install_gfortran/index.html +++ b/ja/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/text_editors/index.html b/ja/learn/os_setup/text_editors/index.html index 121300a0c208..68c0c5f618bc 100644 --- a/ja/learn/os_setup/text_editors/index.html +++ b/ja/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/os_setup/tips/index.html b/ja/learn/os_setup/tips/index.html index 558724215fe8..83e5faa662b7 100644 --- a/ja/learn/os_setup/tips/index.html +++ b/ja/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/arrays_strings/index.html b/ja/learn/quickstart/arrays_strings/index.html index 732699bc79b6..7afab2dee1ae 100644 --- a/ja/learn/quickstart/arrays_strings/index.html +++ b/ja/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/derived_types/index.html b/ja/learn/quickstart/derived_types/index.html index 080072ed6f63..75911ac2433b 100644 --- a/ja/learn/quickstart/derived_types/index.html +++ b/ja/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/hello_world/index.html b/ja/learn/quickstart/hello_world/index.html index 83927c94d94b..6f20efe39652 100644 --- a/ja/learn/quickstart/hello_world/index.html +++ b/ja/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/index.html b/ja/learn/quickstart/index.html index 86e709af353f..1cc9bb7118a8 100644 --- a/ja/learn/quickstart/index.html +++ b/ja/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/operators_control_flow/index.html b/ja/learn/quickstart/operators_control_flow/index.html index 6c6b36fce1fb..71b7165f9973 100644 --- a/ja/learn/quickstart/operators_control_flow/index.html +++ b/ja/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/organising_code/index.html b/ja/learn/quickstart/organising_code/index.html index 63bc5ea56acf..c8fe0a8ac9b4 100644 --- a/ja/learn/quickstart/organising_code/index.html +++ b/ja/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/learn/quickstart/variables/index.html b/ja/learn/quickstart/variables/index.html index 532baeaf9109..a6bceca385ab 100644 --- a/ja/learn/quickstart/variables/index.html +++ b/ja/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/02-28-J3-february-meeting/index.html b/ja/news/2020/02-28-J3-february-meeting/index.html index 24ab7f5170bb..08e36ec82253 100644 --- a/ja/news/2020/02-28-J3-february-meeting/index.html +++ b/ja/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/04-06-Announcing-FortranCon-2020/index.html b/ja/news/2020/04-06-Announcing-FortranCon-2020/index.html index 04b3b8c83797..c4434e144193 100644 --- a/ja/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/ja/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/04-18-Fortran-Webinar/index.html b/ja/news/2020/04-18-Fortran-Webinar/index.html index 3333984bc9d0..f97279f7b658 100644 --- a/ja/news/2020/04-18-Fortran-Webinar/index.html +++ b/ja/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/ja/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index ed6700b44c12..2d62e98cab1f 100644 --- a/ja/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/ja/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/ja/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 3ff7b90948c8..efb0ccb58cab 100644 --- a/ja/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/ja/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/ja/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 6e437cd44177..8e4c53d3f881 100644 --- a/ja/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/ja/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/ja/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index dedb61430bf4..888843966dfe 100644 --- a/ja/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/ja/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/ja/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 024c945b2e1b..5918dd5c0f3a 100644 --- a/ja/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/ja/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,49 +415,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/ja/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index 8621bc16c15c..de211eb6e0fe 100644 --- a/ja/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/ja/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/ja/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 62db12ae432f..746612315ef5 100644 --- a/ja/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/ja/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -461,7 +464,7 @@

- Gary Klimowicz + Milan Curcic diff --git a/ja/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/ja/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index 0529eafbbf3b..6be4ca0ecfec 100644 --- a/ja/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/ja/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/2020/index.html b/ja/news/2020/index.html index e555aed6a4a8..48b7daa9612b 100644 --- a/ja/news/2020/index.html +++ b/ja/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -600,42 +603,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -649,7 +652,7 @@

- Gary Klimowicz + Milan Curcic @@ -709,42 +712,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -804,49 +807,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -906,35 +909,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic @@ -1068,14 +1071,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/ja/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 20215f226687..d5152bfd816a 100644 --- a/ja/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/ja/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/ja/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index d8baa84f023a..330a5c3ea9c9 100644 --- a/ja/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/ja/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/ja/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 937031c5999a..64ba8e697e0b 100644 --- a/ja/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/ja/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic diff --git a/ja/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/ja/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 36eccbc9e14c..44e9c4f368e9 100644 --- a/ja/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/ja/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/ja/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index c9a3a8e921ca..a239fba70234 100644 --- a/ja/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/ja/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -440,7 +443,7 @@

- Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2021/04-20-First-Year/index.html b/ja/news/2021/04-20-First-Year/index.html index a416e6d7d7d7..fb445008561f 100644 --- a/ja/news/2021/04-20-First-Year/index.html +++ b/ja/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík diff --git a/ja/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/ja/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index b9aa46818767..40b892fa194b 100644 --- a/ja/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/ja/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -440,7 +443,7 @@

- Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2021/05-18-Welcome-GSoC-students/index.html b/ja/news/2021/05-18-Welcome-GSoC-students/index.html index ab2ababa86c6..b4898c0680cf 100644 --- a/ja/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/ja/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,28 +429,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/ja/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 3fb707510df6..9f44351e7be9 100644 --- a/ja/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/ja/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/ja/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 947d8a876882..bce538f86141 100644 --- a/ja/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/ja/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -440,7 +443,7 @@

- Zachary Moon + Milan Curcic diff --git a/ja/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/ja/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index 19be55d4e90f..e61bb0cd9ea8 100644 --- a/ja/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/ja/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic diff --git a/ja/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/ja/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 73af3b23b877..016337cbd4bc 100644 --- a/ja/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/ja/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/ja/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index e9434d3fb599..0ec34a7394c1 100644 --- a/ja/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/ja/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík diff --git a/ja/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/ja/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 57fb104e7fbc..6b0c43ff39ec 100644 --- a/ja/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/ja/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -433,7 +436,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/ja/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 69886b0ed50f..3fd42573ee61 100644 --- a/ja/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/ja/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -426,7 +429,7 @@

- Sebastian Ehlert + Milan Curcic diff --git a/ja/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/ja/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 368e555107f8..127334f3677f 100644 --- a/ja/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/ja/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -440,7 +443,7 @@

- Jérémie Vandenplas + Milan Curcic diff --git a/ja/news/2021/index.html b/ja/news/2021/index.html index 102b938472ef..2417ae0264ab 100644 --- a/ja/news/2021/index.html +++ b/ja/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -540,7 +543,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -609,7 +612,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -623,7 +626,7 @@

- Sebastian Ehlert + Milan Curcic @@ -683,14 +686,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -704,7 +707,7 @@

- Sebastian Ehlert + Milan Curcic @@ -771,14 +774,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -838,14 +841,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -859,7 +862,7 @@

- Sebastian Ehlert + Milan Curcic @@ -919,21 +922,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -993,14 +996,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1021,7 +1024,7 @@

- Zachary Moon + Milan Curcic @@ -1081,28 +1084,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1176,28 +1179,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1259,21 +1262,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1287,7 +1290,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1347,28 +1350,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1434,14 +1437,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1462,7 +1465,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1522,56 +1525,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -1631,21 +1634,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1705,35 +1708,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1793,42 +1796,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/ja/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index baee7efffc4e..dead1b77d151 100644 --- a/ja/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/ja/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/ja/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index c51b29d9ceab..13a33b3208ca 100644 --- a/ja/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/ja/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -433,14 +436,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/ja/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 1941addf15e4..aac7fa3470e4 100644 --- a/ja/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/ja/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/ja/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index e9cf82e0f05a..fd28f73c90b4 100644 --- a/ja/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/ja/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/ja/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 4275da6fe8b0..562cf1fb46fa 100644 --- a/ja/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/ja/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/ja/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index eb7402279b8b..b02028769dd5 100644 --- a/ja/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/ja/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/2022/index.html b/ja/news/2022/index.html index 3e1c48fc8ae7..f3df9665e124 100644 --- a/ja/news/2022/index.html +++ b/ja/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,14 +818,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -836,14 +839,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -903,35 +906,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/archive/index.html b/ja/news/archive/index.html index 9c528f725dc6..e3476c09ec31 100644 --- a/ja/news/archive/index.html +++ b/ja/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/atom.xml b/ja/news/atom.xml index 4c412832641c..5865f9336331 100644 --- a/ja/news/atom.xml +++ b/ja/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:12:56.707523+00:00 + 2023-05-22T09:18:38.064975+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here's what's new in the fortran-lang.org r Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -51,7 +51,7 @@ Fortran news from the previous month.Here's what's new in the fortran-lang.org r Fortran newsletter: April 2022 2022-04-07T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here's what's new in the fortran-lang.org r Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here's what's new in the fortran-lang.org r Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here's what's new and ongoing in the fortra Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here's what's new and ongoing in the fortra Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Jérémie Vandenplas + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -191,7 +191,7 @@ Fortran news from the previous month.Here's what's new and ongoing in the fortra Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -211,7 +211,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Alexis Perry-Holby + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Zachary Moon + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>We're happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we've had several updates to the First year of the Fortran website 2021-04-20T00:00:00+00:00 - Brad Richardson + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Sebastian Ehlert + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we've had several updates to the Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we've had a few updates to the w Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we've had a few updates to the w Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we've had a few updates to the w Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we've had a few additions and im Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we've had only one m Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Arjen Markus and Gary Klimowicz + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. diff --git a/ja/news/author/alexis-perry-holby/index.html b/ja/news/author/alexis-perry-holby/index.html index cd67fbe70ede..09493f98f81e 100644 --- a/ja/news/author/alexis-perry-holby/index.html +++ b/ja/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,14 +818,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -836,14 +839,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -903,35 +906,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -992,7 +995,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1006,7 +1009,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1066,14 +1069,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1087,7 +1090,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1154,14 +1157,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1221,14 +1224,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1242,7 +1245,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1302,21 +1305,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1330,7 +1333,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1390,14 +1393,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1418,7 +1421,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1478,35 +1481,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/author/and-jeremie-vandenplas/index.html b/ja/news/author/and-jeremie-vandenplas/index.html index 89a4b2925c6e..f97aafbb048c 100644 --- a/ja/news/author/and-jeremie-vandenplas/index.html +++ b/ja/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/author/and-laurence-kedward/index.html b/ja/news/author/and-laurence-kedward/index.html index e47688c5ffd2..30e79e5a7e46 100644 --- a/ja/news/author/and-laurence-kedward/index.html +++ b/ja/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -607,49 +610,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/arjen-markus-and-gary-klimowicz/index.html b/ja/news/author/arjen-markus-and-gary-klimowicz/index.html index 245e016cde66..dc98e2119045 100644 --- a/ja/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/ja/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/arjen-markus/index.html b/ja/news/author/arjen-markus/index.html index b333f375ca85..633cf714c85b 100644 --- a/ja/news/author/arjen-markus/index.html +++ b/ja/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,28 +529,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -609,56 +612,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/author/brad-richardson/index.html b/ja/news/author/brad-richardson/index.html index 44257f19dfdb..feaabbe5a354 100644 --- a/ja/news/author/brad-richardson/index.html +++ b/ja/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,28 +529,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -609,28 +612,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -696,56 +699,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -805,42 +808,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -854,7 +857,7 @@

- Gary Klimowicz + Milan Curcic @@ -914,42 +917,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1009,49 +1012,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1111,14 +1114,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/news/author/damian-rouson/index.html b/ja/news/author/damian-rouson/index.html index 0f98e1379fb6..572818b7ed65 100644 --- a/ja/news/author/damian-rouson/index.html +++ b/ja/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/author/gagandeep-singh/index.html b/ja/news/author/gagandeep-singh/index.html index da7e73453c51..b884e736775a 100644 --- a/ja/news/author/gagandeep-singh/index.html +++ b/ja/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -614,14 +617,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/author/gary-klimowicz/index.html b/ja/news/author/gary-klimowicz/index.html index b9969530a961..b75565dd1c45 100644 --- a/ja/news/author/gary-klimowicz/index.html +++ b/ja/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -608,35 +611,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -696,42 +699,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -745,7 +748,7 @@

- Gary Klimowicz + Milan Curcic @@ -805,42 +808,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -900,49 +903,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/giannis-nikiteas/index.html b/ja/news/author/giannis-nikiteas/index.html index 8ee0ac50018a..7e3359a75fac 100644 --- a/ja/news/author/giannis-nikiteas/index.html +++ b/ja/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/author/henil-panchal/index.html b/ja/news/author/henil-panchal/index.html index 58109e503000..04177e236307 100644 --- a/ja/news/author/henil-panchal/index.html +++ b/ja/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ja/news/author/index.html b/ja/news/author/index.html index b8ae8b1d0b36..ab7e432ba559 100644 --- a/ja/news/author/index.html +++ b/ja/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/author/ivan-pribec/index.html b/ja/news/author/ivan-pribec/index.html index 43c340b30271..025e612a3169 100644 --- a/ja/news/author/ivan-pribec/index.html +++ b/ja/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -561,7 +564,7 @@

- Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/jeremie-vandenplas/index.html b/ja/news/author/jeremie-vandenplas/index.html index 8de267d0b5f4..9b3860a14c6c 100644 --- a/ja/news/author/jeremie-vandenplas/index.html +++ b/ja/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -533,14 +536,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -600,35 +603,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -689,21 +692,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -717,7 +720,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -786,35 +789,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -874,42 +877,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -970,35 +973,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1058,42 +1061,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1153,49 +1156,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1255,35 +1258,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/laurence-kedward/index.html b/ja/news/author/laurence-kedward/index.html index 911db480764c..04be607f74b5 100644 --- a/ja/news/author/laurence-kedward/index.html +++ b/ja/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -540,7 +543,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -616,14 +619,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -683,21 +686,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -757,14 +760,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -785,7 +788,7 @@

- Zachary Moon + Milan Curcic @@ -845,28 +848,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -940,28 +943,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1023,21 +1026,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1051,7 +1054,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1111,28 +1114,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1198,14 +1201,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1226,7 +1229,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1286,56 +1289,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -1395,21 +1398,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1469,35 +1472,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1557,42 +1560,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1653,35 +1656,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1741,42 +1744,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -1790,7 +1793,7 @@

- Gary Klimowicz + Milan Curcic @@ -1850,35 +1853,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/marshall-ward/index.html b/ja/news/author/marshall-ward/index.html index 410c74fcc029..21106bc6b849 100644 --- a/ja/news/author/marshall-ward/index.html +++ b/ja/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic diff --git a/ja/news/author/milan-curcic-and-ondrej-certik/index.html b/ja/news/author/milan-curcic-and-ondrej-certik/index.html index c08e4e3ed0ef..adad76945d90 100644 --- a/ja/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/ja/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/news/author/milan-curcic/index.html b/ja/news/author/milan-curcic/index.html index 579cb0dae47a..1c75d605c661 100644 --- a/ja/news/author/milan-curcic/index.html +++ b/ja/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,14 +818,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -836,14 +839,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -903,35 +906,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -992,21 +995,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1020,7 +1023,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -1089,7 +1092,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1103,7 +1106,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1163,14 +1166,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1244,14 +1247,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1265,7 +1268,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1325,21 +1328,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1399,14 +1402,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1427,7 +1430,7 @@

- Zachary Moon + Milan Curcic @@ -1487,28 +1490,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1582,28 +1585,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1665,21 +1668,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1693,7 +1696,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1753,28 +1756,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1840,14 +1843,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1868,7 +1871,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1928,56 +1931,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -2037,21 +2040,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -2111,35 +2114,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -2199,42 +2202,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2295,35 +2298,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2383,42 +2386,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -2432,7 +2435,7 @@

- Gary Klimowicz + Milan Curcic @@ -2492,42 +2495,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2587,49 +2590,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2689,35 +2692,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/ondrej-certik-and-zach-jibben/index.html b/ja/news/author/ondrej-certik-and-zach-jibben/index.html index 11a7a63ac384..4d5275939bc9 100644 --- a/ja/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/ja/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/author/ondrej-certik/index.html b/ja/news/author/ondrej-certik/index.html index 5fb7d6472d08..1795f425dcb1 100644 --- a/ja/news/author/ondrej-certik/index.html +++ b/ja/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -593,21 +596,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -667,35 +670,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -756,21 +759,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -784,7 +787,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -853,14 +856,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -874,7 +877,7 @@

- Sebastian Ehlert + Milan Curcic @@ -941,14 +944,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1008,14 +1011,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1029,7 +1032,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1089,21 +1092,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1163,14 +1166,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1191,7 +1194,7 @@

- Zachary Moon + Milan Curcic @@ -1251,28 +1254,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1346,28 +1349,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1429,21 +1432,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1457,7 +1460,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1517,28 +1520,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1604,14 +1607,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1632,7 +1635,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1692,56 +1695,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -1801,21 +1804,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1875,42 +1878,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1971,35 +1974,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2059,42 +2062,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -2108,7 +2111,7 @@

- Gary Klimowicz + Milan Curcic @@ -2168,42 +2171,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2263,49 +2266,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2365,35 +2368,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/sebastian-ehlert/index.html b/ja/news/author/sebastian-ehlert/index.html index 50c5a36387ee..d454dbbab13f 100644 --- a/ja/news/author/sebastian-ehlert/index.html +++ b/ja/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -533,14 +536,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -600,35 +603,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -689,21 +692,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -717,7 +720,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -786,7 +789,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -800,7 +803,7 @@

- Sebastian Ehlert + Milan Curcic @@ -860,14 +863,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -881,7 +884,7 @@

- Sebastian Ehlert + Milan Curcic @@ -941,14 +944,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -962,7 +965,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1022,14 +1025,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1050,7 +1053,7 @@

- Zachary Moon + Milan Curcic @@ -1110,28 +1113,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1205,28 +1208,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1288,21 +1291,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1316,7 +1319,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1376,14 +1379,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1404,7 +1407,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1464,56 +1467,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -1573,35 +1576,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1661,42 +1664,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -1757,42 +1760,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -1806,7 +1809,7 @@

- Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/thomas-konig/index.html b/ja/news/author/thomas-konig/index.html index ff08622da89b..52e7989462af 100644 --- a/ja/news/author/thomas-konig/index.html +++ b/ja/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,49 +515,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic diff --git a/ja/news/author/zachary-moon/index.html b/ja/news/author/zachary-moon/index.html index b1c5b4754276..5b609ea76604 100644 --- a/ja/news/author/zachary-moon/index.html +++ b/ja/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -540,7 +543,7 @@

- Zachary Moon + Milan Curcic diff --git a/ja/news/category/index.html b/ja/news/category/index.html index 2022989a6bca..03642a24b105 100644 --- a/ja/news/category/index.html +++ b/ja/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/category/newsletter/index.html b/ja/news/category/newsletter/index.html index 40b6482ab1a9..0184f50a0c0e 100644 --- a/ja/news/category/newsletter/index.html +++ b/ja/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,14 +818,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -836,14 +839,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -903,35 +906,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -992,21 +995,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1020,7 +1023,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -1089,7 +1092,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1103,7 +1106,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1163,14 +1166,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1251,14 +1254,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1318,14 +1321,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1399,21 +1402,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1473,14 +1476,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1501,7 +1504,7 @@

- Zachary Moon + Milan Curcic @@ -1561,28 +1564,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1656,28 +1659,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1739,21 +1742,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1767,7 +1770,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1827,28 +1830,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1914,14 +1917,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1942,7 +1945,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -2002,56 +2005,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -2111,21 +2114,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -2185,35 +2188,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -2273,42 +2276,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2369,35 +2372,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2457,42 +2460,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -2506,7 +2509,7 @@

- Gary Klimowicz + Milan Curcic @@ -2566,42 +2569,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2661,49 +2664,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2763,35 +2766,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/news/drafts/index.html b/ja/news/drafts/index.html index b2b88ddb694b..09081a487ab0 100644 --- a/ja/news/drafts/index.html +++ b/ja/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/news/index.html b/ja/news/index.html index f25e6cc66228..36b642f19375 100644 --- a/ja/news/index.html +++ b/ja/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Milan Curcic + Henil Panchal , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -607,14 +610,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,14 +818,14 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Jérémie Vandenplas , @@ -836,14 +839,14 @@

- Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -903,35 +906,35 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Ondřej Čertík , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -992,21 +995,21 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1020,7 +1023,7 @@

- Jérémie Vandenplas + Milan Curcic @@ -1089,7 +1092,7 @@

- Milan Curcic + Sebastian Ehlert , @@ -1103,7 +1106,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1163,14 +1166,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1184,7 +1187,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1251,14 +1254,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1318,14 +1321,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Sebastian Ehlert , @@ -1339,7 +1342,7 @@

- Sebastian Ehlert + Milan Curcic @@ -1399,21 +1402,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -1473,14 +1476,14 @@

- Ondřej Čertík + Zachary Moon , - Milan Curcic + Ondřej Čertík , @@ -1501,7 +1504,7 @@

- Zachary Moon + Milan Curcic @@ -1561,28 +1564,28 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Sebastian Ehlert , - Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic @@ -1656,28 +1659,28 @@

- Brad Richardson + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Milan Curcic + Sebastian Ehlert , - Sebastian Ehlert + Milan Curcic @@ -1739,21 +1742,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , @@ -1767,7 +1770,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -1827,28 +1830,28 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík @@ -1914,14 +1917,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík , @@ -1942,7 +1945,7 @@

- Alexis Perry-Holby + Milan Curcic @@ -2002,56 +2005,56 @@

- Arjen Markus + Marshall Ward , - Ondřej Čertík + Arjen Markus , - Marshall Ward + Ondřej Čertík , - Brad Richardson + Laurence Kedward , - Damian Rouson + Brad Richardson , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Damian Rouson , - Sebastian Ehlert + Milan Curcic @@ -2111,21 +2114,21 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic @@ -2185,35 +2188,35 @@

- Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -2273,42 +2276,42 @@

- Ondřej Čertík + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2369,35 +2372,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2457,42 +2460,42 @@

- Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec , - Brad Richardson + Ondřej Čertík , - Ivan Pribec + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Milan Curcic + Brad Richardson , @@ -2506,7 +2509,7 @@

- Gary Klimowicz + Milan Curcic @@ -2566,42 +2569,42 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Milan Curcic + Brad Richardson , - Jérémie Vandenplas + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2661,49 +2664,49 @@

- Ondřej Čertík + and Laurence Kedward , - Brad Richardson + Thomas König , - and Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Milan Curcic @@ -2763,35 +2766,35 @@

- Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Milan Curcic @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/ja/packages/data-types/index.html b/ja/packages/data-types/index.html index 3491abd94cf7..14f526a32c83 100644 --- a/ja/packages/data-types/index.html +++ b/ja/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/examples/index.html b/ja/packages/examples/index.html index 074e1116d742..dce02ae013f4 100644 --- a/ja/packages/examples/index.html +++ b/ja/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/graphics/index.html b/ja/packages/graphics/index.html index d194d51b52d5..1c9038f44e74 100644 --- a/ja/packages/graphics/index.html +++ b/ja/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/index.html b/ja/packages/index.html index 41b0a64b400d..88260ba15bfe 100644 --- a/ja/packages/index.html +++ b/ja/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/interfaces/index.html b/ja/packages/interfaces/index.html index ad4285be4b37..7e262202eed4 100644 --- a/ja/packages/interfaces/index.html +++ b/ja/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/io/index.html b/ja/packages/io/index.html index cb0b3f752de4..2fa81759d6cb 100644 --- a/ja/packages/io/index.html +++ b/ja/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/libraries/index.html b/ja/packages/libraries/index.html index ce3065c7d5b8..090e7d89c9cd 100644 --- a/ja/packages/libraries/index.html +++ b/ja/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/numerical/index.html b/ja/packages/numerical/index.html index aaadeea5690a..7a04ee6db72d 100644 --- a/ja/packages/numerical/index.html +++ b/ja/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/programming/index.html b/ja/packages/programming/index.html index 7de3a05840b9..dfbae74f72d7 100644 --- a/ja/packages/programming/index.html +++ b/ja/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/scientific/index.html b/ja/packages/scientific/index.html index 7f240afd26bb..1b958e2d1566 100644 --- a/ja/packages/scientific/index.html +++ b/ja/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/packages/strings/index.html b/ja/packages/strings/index.html index 19d76a6dedcc..38a6f597ffe7 100644 --- a/ja/packages/strings/index.html +++ b/ja/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/roadmap/index.html b/ja/roadmap/index.html index 326f542de99b..277c45278516 100644 --- a/ja/roadmap/index.html +++ b/ja/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ja/search/index.html b/ja/search/index.html index 01d87a972988..307fa738e9d9 100644 --- a/ja/search/index.html +++ b/ja/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/learn/best_practices/allocatable_arrays/index.html b/learn/best_practices/allocatable_arrays/index.html new file mode 100644 index 000000000000..391544b56336 --- /dev/null +++ b/learn/best_practices/allocatable_arrays/index.html @@ -0,0 +1,857 @@ + + + + + + + + + Allocatable Arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Allocatable Arrays#

+

The allocatable attribute provides a safe way for memory handling. +In comparison to variables with pointer attribute the memory is managed +automatically and will be deallocated automatically once the variable goes +out-of-scope. Using allocatable variables removes the possibility to +create memory leaks in an application.

+

They can be used in subroutines to create scratch or work arrays, where +automatic arrays would become too large to fit on the stack.

+
real(dp), allocatable :: temp(:)
+allocate(temp(10))
+
+
+

The allocation status can be checked using the allocated intrinsic +to avoid uninitialized access

+
subroutine show_arr(arr)
+  integer, allocatable, intent(in) :: arr(:)
+
+  if (allocated(arr)) then
+    print *, arr
+  end if
+end subroutine show_arr
+
+
+

To allocate variables inside a procedure the dummy argument has to carry +the allocatable attribute. Using it in combination with intent(out) +will deallocate previous allocations before entering the procedure:

+
subroutine foo(lam)
+  real(dp), allocatable, intent(out) :: lam(:)
+  allocate(lam(5))
+end subroutine foo
+
+
+

The allocated array can be used afterwards like a normal array

+
real(dp), allocatable :: lam(:)
+call foo(lam)
+
+
+

An already allocated array cannot be allocated again without prior deallocation. +Similarly, deallocation can only be invoked for allocated arrays. To reallocate +an array use

+
if (allocated(lam)) deallocate(lam)
+allocate(lam(10))
+
+
+

Passing allocated arrays to procedures does not require the allocatable attribute +for the dummy arguments anymore.

+
subroutine show_arr(arr)
+  integer, intent(in) :: arr(:)
+
+  print *, arr
+end subroutine show_arr
+
+subroutine proc
+  integer :: i
+  integer, allocatable :: arr
+
+  allocate(arr(5))
+
+  do i = 1, size(arr)
+    arr(i) = 2*i + 1
+  end do
+  call show_arr(arr)
+end subroutine proc
+
+
+

Passing an unallocated array in this context will lead to an invalid memory access. +Allocatable arrays can be passed to optional dummy arguments – if they are unallocated +the argument will not be present. The allocatable attribute is not limited to +arrays and can also be associated with scalars, which can be useful in combination +with optional dummy arguments.

+

Allocations can be moved between different arrays with allocatable attribute +using the move_alloc intrinsic subroutine.

+
subroutine resize(var, n)
+  real(wp), allocatable, intent(inout) :: var(:)
+  integer, intent(in), optional :: n
+  integer :: this_size, new_size
+  integer, parameter :: inital_size = 16
+
+  if (allocated(var)) then
+    this_size = size(var, 1)
+    call move_alloc(var, tmp)
+  else
+    this_size = initial_size
+  end if
+
+  if (present(n)) then
+    new_size = n
+  else
+    new_size = this_size + this_size/2 + 1
+  end if
+
+  allocate(var(new_size))
+
+  if (allocated(tmp)) then
+    this_size = min(size(tmp, 1), size(var, 1))
+    var(:this_size) = tmp(:this_size)
+  end if
+end subroutine resize
+
+
+

Finally, allocations do not initialize the array. The content of the uninitialized +array is most likely just the bytes of whatever was previously at the respective address. +The allocation supports initialization using the source attribute:

+
real(dp), allocatable :: arr(:)
+allocate(arr(10), source=0.0_dp)
+
+
+

The source keyword supports scalar and array valued variables and constants.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/arrays/index.html b/learn/best_practices/arrays/index.html new file mode 100644 index 000000000000..6650a9f4ee4e --- /dev/null +++ b/learn/best_practices/arrays/index.html @@ -0,0 +1,907 @@ + + + + + + + + + Arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Arrays#

+

Arrays are a central object in Fortran. The creation of dynamic sized arrays +is discussed in the allocatable arrays section.

+

To pass arrays to procedures four ways are available

+
    +
  1. assumed-shape arrays

  2. +
  3. assumed-rank arrays

  4. +
  5. explicit-shape arrays

  6. +
  7. assumed-size arrays

  8. +
+

The preferred way to pass arrays to procedures is as assumed-shape arrays

+
subroutine f(r)
+  real(dp), intent(out) :: r(:)
+  integer :: n, i
+  n = size(r)
+  do i = 1, n
+    r(i) = 1.0_dp / i**2
+  end do
+end subroutine f
+
+
+

Higher-dimensional arrays can be passed in a similar way.

+
subroutine g(A)
+  real(dp), intent(in) :: A(:, :)
+  ...
+end subroutine g
+
+
+

The array is simply passed by

+
real(dp) :: r(5)
+call f(r)
+
+
+

In this case no array copy is done, which has the advantage that the shape and size +information is automatically passed along and checked at compile and optionally at +runtime. +Similarly, array strides can be passed without requiring a copy of the array but as +assumed-shape descriptor:

+
real(dp) :: r(10)
+call f(r(1:10:2))
+call f(r(2:10:2))
+
+
+

This should always be your default way of passing arrays in and out of subroutines. +Avoid passing arrays as whole slices, as it obfuscates the actual intent of the code:

+
real(dp) :: r(10)
+call f(r(:))
+
+
+

In case more general arrays should be passed to a procedure the assumed-rank +functionality introduced in the Fortran 2018 standard can be used

+
subroutine h(r)
+  real(dp), intent(in) :: r(..)
+  select rank(r)
+  rank(1)
+  ! ...
+  rank(2)
+  ! ...
+  end select
+end subroutine h
+
+
+

The actual rank can be queried at runtime using the select rank construct. +This easily allows to create more generic functions that have to deal with +different array ranks.

+

Explicit-shape arrays can be useful for returning data from functions. +Most of their functionality can be provided by assumed-shape and assumed-rank +arrays but they find frequent use for interfacing with C or in legacy Fortran +procedures, therefore they will be discussed briefly here.

+

To use explicit-shape arrays, the dimension has to be passed explicitly as dummy +argument like in the example below

+
subroutine f(n, r)
+  integer, intent(in) :: n
+  real(dp), intent(out) :: r(n)
+  integer :: i
+  do i = 1, n
+    r(i) = 1.0_dp / i**2
+  end do
+end subroutine
+
+
+

For high-dimensional arrays additional indices have to be passed.

+
subroutine g(m, n, A)
+  integer, intent(in) :: m, n
+  real(dp), intent(in) :: A(m, n)
+  ...
+end subroutine
+
+
+

The routines can be invoked by

+
real(dp) :: r(5), s(3, 4)
+call f(size(r), r)
+call g(size(s, 1), size(s, 2), s)
+
+
+

Note that the shape is not checked, so the following would be legal code +that will potentially yield incorrect results:

+
real(dp) :: s(3, 4)
+call g(size(s), 1, s)  ! s(12, 1) in g
+call g(size(s, 2), size(s, 1), s)  ! s(4, 3) in g
+
+
+

In this case the memory layout is preserved but the shape is changed. +Also, explicit-shape arrays require contiguous memory and will create temporary +arrays in case non-contiguous array strides are passed.

+

To return an array from a function with explicit-shape use

+
function f(n) result(r)
+  integer, intent(in) :: n
+  real(dp) :: r(n)
+  integer :: i
+  do i = 1, n
+    r(i) = 1.0_dp / i**2
+  end do
+end function
+
+
+

Finally, there are assumed-size arrays, which provide the least compile-time and run-time +checking and can be found frequently in legacy code. They should be avoided +in favour of assumed-shape or assumed-rank arrays. +An assumed-size array dummy argument is identified by an asterisk as the last dimension, +this disables the usage of this array with many intrinsic functions, like size or +shape.

+

To check for the correct size and shape of an assumed-shape array the size and +shape intrinsic functions can be used to query for those properties

+
if (size(r) /= 4) error stop "Incorrect size of 'r'"
+if (any(shape(r) /= [2, 2])) error stop "Incorrect shape of 'r'"
+
+
+

Note that size returns the total size of all dimensions. To obtain the shape of +a specific dimension add it as second argument to the function.

+

Arrays can be initialized by using an array constructor

+
integer :: r(5)
+r = [1, 2, 3, 4, 5]
+
+
+

The array constructor can be annotated with the type of the constructed array

+
real(dp) :: r(5)
+r = [real(dp) :: 1, 2, 3, 4, 5]
+
+
+

Implicit do loops can be used inside an array constructor as well

+
integer :: i
+real(dp) :: r(5)
+r = [(real(i**2, dp), i = 1, size(r))]
+
+
+

In order for the array to start with different index than 1, do:

+
subroutine print_eigenvalues(kappa_min, lam)
+  integer, intent(in) :: kappa_min
+  real(dp), intent(in) :: lam(kappa_min:)
+
+  integer :: kappa
+  do kappa = kappa_min, ubound(lam, 1)
+    print *, kappa, lam(kappa)
+  end do
+end subroutine print_eigenvalues
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/callbacks/index.html b/learn/best_practices/callbacks/index.html new file mode 100644 index 000000000000..838e301140d4 --- /dev/null +++ b/learn/best_practices/callbacks/index.html @@ -0,0 +1,831 @@ + + + + + + + + + Callbacks — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Callbacks#

+

A callback is a function that is passed as an argument to another function.

+

The preferred way of creating such a callback is to provide an abstract interface +declaring the signature of the callback. This allows to use compile time checks +for the passed callback.

+
module integrals
+  use types, only: dp
+  implicit none
+  private
+  public :: simpson, integrable_function
+
+  abstract interface
+    function integrable_function(x) result(func)
+      import :: dp
+      real(dp), intent(in) :: x
+      real(dp) :: func
+    end function
+  end interface
+
+contains
+
+  function simpson(f, a, b) result(s)
+    real(dp), intent(in) :: a, b
+    procedure(integrable_function) :: f
+    real(dp) :: s
+
+    s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b))
+  end function simpson
+
+end module integrals
+
+
+

The function can then be used with a callback by importing the module +as shown in the following example

+
module demo_functions
+  use types, only: dp
+  implicit none
+  private
+  public :: test_integral
+
+contains
+
+  subroutine test_integral(a, k)
+    real(dp), intent(in) :: a, k
+
+    print *, simpson(f, 0._dp, pi)
+    print *, simpson(f, 0._dp, 2*pi)
+  contains
+
+    function f(x) result(y)
+      real(dp), intent(in) :: x
+      real(dp) :: y
+      y = a*sin(k*x)
+    end function f
+  end subroutine test_integral
+
+end module demo_functions
+
+
+

Exporting the abstract interface allows you to create procedure pointers with the +correct signature and also to extend the callback further as shown here

+
module demo_integrals
+  use types, only: dp
+  use integrals, only: simpson, integrable_function
+  implicit none
+  private
+  public :: simpson2, integrable_function
+
+contains
+
+  function simpson2(f, a, b) result(s)
+    real(dp), intent(in) :: a, b
+    procedure(integrable_function) :: f
+    real(dp) :: s
+    real(dp) :: mid
+    mid = (a + b)/2
+    s = simpson(f, a, mid) + simpson(f, mid, b)
+  end function simpson2
+
+end module demo_integrals
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/element_operations/index.html b/learn/best_practices/element_operations/index.html new file mode 100644 index 000000000000..31aba2a697b8 --- /dev/null +++ b/learn/best_practices/element_operations/index.html @@ -0,0 +1,853 @@ + + + + + + + + + Element-wise Operations on Arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Element-wise Operations on Arrays#

+

There are three approaches to perform element-wise operations on arrays when using subroutines and functions:

+
    +
  • elemental procedures

  • +
  • explicit-shape arrays

  • +
  • implementing the operation for vectors and write simple wrapper +subroutines (that use reshape internally) for each array shape

  • +
+

In the first approach, one uses the elemental keyword to create a +function like this:

+
real(dp) elemental function nroot(n, x) result(y)
+  integer, intent(in) :: n
+  real(dp), intent(in) :: x
+  y = x**(1._dp / n)
+end function
+
+
+

All arguments (in and out) must be scalars. You can then use this +function with arrays of any (compatible) shape, for example:

+
print *, nroot(2, 9._dp)
+print *, nroot(2, [1._dp, 4._dp, 9._dp, 10._dp])
+print *, nroot(2, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2]))
+print *, nroot([2, 3, 4, 5], [1._dp, 4._dp, 9._dp, 10._dp])
+print *, nroot([2, 3, 4, 5], 4._dp)
+
+
+

The output will be:

+
3.0000000000000000
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+1.0000000000000000        1.5874010519681994        1.7320508075688772        1.5848931924611136
+2.0000000000000000        1.5874010519681994        1.4142135623730951        1.3195079107728942
+
+
+

In the above, typically n is a parameter and x is the array of an +arbitrary shape, but as you can see, Fortran does not care as long as +the final operation makes sense (if one argument is an array, then the +other arguments must be either arrays of the same shape or scalars). If +it does not, you will get a compiler error.

+

The elemental keyword implies the pure keyword, so the procedure +must be pure. It results that elemental procedures can only use pure procedures and have no side effects.

+

If the elemental procedure algorithm can be made faster using array +operations inside, or if for some reasons the arguments must be arrays of +incompatible shapes, then one should use the other two approaches. One +can make nroot operate on a vector and write a simple wrapper for +other array shapes, e.g.:

+
function nroot(n, x) result(y)
+  integer, intent(in) :: n
+  real(dp), intent(in) :: x(:)
+  real(dp) :: y(size(x))
+  y = x**(1._dp / n)
+end function
+
+function nroot_0d(n, x) result(y)
+  integer, intent(in) :: n
+  real(dp), intent(in) :: x
+  real(dp) :: y
+  real(dp) :: tmp(1)
+  tmp = nroot(n, [x])
+  y = tmp(1)
+end function
+
+function nroot_2d(n, x) result(y)
+  integer, intent(in) :: n
+  real(dp), intent(in) :: x(:, :)
+  real(dp) :: y(size(x, 1), size(x, 2))
+  y = reshape(nroot(n, reshape(x, [size(x)])), [size(x, 1), size(x, 2)])
+end function
+
+
+

And use as follows:

+
print *, nroot_0d(2, 9._dp)
+print *, nroot(2, [1._dp, 4._dp, 9._dp, 10._dp])
+print *, nroot_2d(2, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2]))
+
+
+

This will print:

+
3.0000000000000000
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+
+
+

Or one can use explicit-shape arrays as +follows:

+
function nroot(n, k, x) result(y)
+  integer, intent(in) :: n, k
+  real(dp), intent(in) :: x(k)
+  real(dp) :: y(k)
+  y = x**(1._dp / n)
+end function
+
+
+

Use as follows:

+
print *, nroot(2, 1, [9._dp])
+print *, nroot(2, 4, [1._dp, 4._dp, 9._dp, 10._dp])
+print *, nroot(2, 4, reshape([1._dp, 4._dp, 9._dp, 10._dp], [2, 2]))
+
+
+

The output is the same as before:

+
3.0000000000000000
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+1.0000000000000000        2.0000000000000000        3.0000000000000000        3.1622776601683795
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/file_io/index.html b/learn/best_practices/file_io/index.html new file mode 100644 index 000000000000..07f29b0253fd --- /dev/null +++ b/learn/best_practices/file_io/index.html @@ -0,0 +1,828 @@ + + + + + + + + + File Input/Output — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

File Input/Output#

+

In Fortran files are managed by unit identifiers. Interaction with the filesystem +mainly happens through the open and inquire built-in procedures. +Generally, the workflow is to open a file to a unit identifier, read and/or write +to it and close it again.

+
integer :: io
+open(newunit=io, file="log.txt")
+! ...
+close(io)
+
+
+

By default the file will be created if it is not existing already and opened for +both reading and writing. Writing to an existing file will start in the first +record (line) and therefore overwrite the file by default.

+

To create a read-only access to a file the status and action have to be +specified with

+
integer :: io
+open(newunit=io, file="log.txt", status="old", action="read")
+read(io, *) a, b
+close(io)
+
+
+

In case the file is not present a runtime error will occur. To check for the existence +of a file prior to opening it the inquire function can be used

+
logical :: exists
+inquire(file="log.txt", exist=exists)
+if (exists) then
+  ! ...
+end if
+
+
+

Alternatively, the open procedure can return an optional iostat and iomsg:

+
integer :: io, stat
+character(len=512) :: msg
+open(newunit=io, file="log.txt", status="old", action="read", &
+  iostat=stat, iomsg=msg)
+if (stat /= 0) then
+  print *, trim(msg)
+end if
+
+
+

Note that iomsg requires a fixed-length character variable with sufficient storage +size to hold the error message.

+

Similarly, writing to a file happens by using the status and action keyword. +To create a new file use

+
integer :: io
+open(newunit=io, file="log.txt", status="new", action="write")
+write(io, *) a, b
+close(io)
+
+
+

Alternatively, status="replace" can be used to overwrite an existing file. +It is highly recommended to first check for the existence of a file before deciding +on the status to use. +To append to an output file the position keyword can be specified explicitly with

+
integer :: io
+open(newunit=io, file="log.txt", position="append", &
+  & status="old", action="write")
+write(io, *) size(v)
+write(io, *) v(:)
+close(io)
+
+
+

To reset the position in a file the built-in procedures rewind and backspace +can be used. rewind will reset to the first record (line), while backspace will +return to the previous record (line).

+

Finally, to delete a file the file has to be opened and can be deleted after closing +with

+
logical :: exists
+integer :: io, stat
+inquire(file="log.txt", exist=exists)
+if (exists) then
+  open(file="log.txt", newunit=io, iostat=stat)
+  if (stat == 0) close(io, status="delete", iostat=stat)
+end if
+
+
+

A useful IO feature is scratch files, which can be opened with status="scratch". +They are automatically deleted after closing the unit identifier.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/floating_point/index.html b/learn/best_practices/floating_point/index.html new file mode 100644 index 000000000000..4a69d71095bf --- /dev/null +++ b/learn/best_practices/floating_point/index.html @@ -0,0 +1,821 @@ + + + + + + + + + Floating Point Numbers — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Floating Point Numbers#

+

The default representation of floating point numbers is using single precision +(usually 32 bits / 4 bytes). For most applications a higher precision is required. +For this purpose a custom kind parameter can be defined. +The recommended way of defining kind parameters is to use

+
integer, parameter :: dp = selected_real_kind(15)
+
+
+

For many purposes it also suffices to directly infer the kind parameter from +a literal like here

+
integer, parameter :: dp = kind(0.0d0)
+
+
+

or to rename the imported kind parameter from the iso_fortran_env module

+
use, intrinsic :: iso_fortran_env, only : dp => real64
+
+
+

For some insightful thoughts on kind parameters see +Doctor Fortran in it takes all KINDs.

+

It is recommended to have a central module to define kind parameters and include +them with use as necessary. An example for such a module is given with

+
!> Numerical storage size parameters for real and integer values
+module kind_parameter
+   implicit none
+   public
+
+   !> Single precision real numbers, 6 digits, range 10⁻³⁷ to 10³⁷-1; 32 bits
+   integer, parameter :: sp = selected_real_kind(6, 37)
+   !> Double precision real numbers, 15 digits, range 10⁻³⁰⁷ to 10³⁰⁷-1; 64 bits
+   integer, parameter :: dp = selected_real_kind(15, 307)
+   !> Quadruple precision real numbers, 33 digits, range 10⁻⁴⁹³¹ to 10⁴⁹³¹-1; 128 bits
+   integer, parameter :: qp = selected_real_kind(33, 4931)
+
+   !> Char length for integers, range -2⁷ to 2⁷-1; 8 bits
+   integer, parameter :: i1 = selected_int_kind(2)
+   !> Short length for integers, range -2¹⁵ to 2¹⁵-1; 16 bits
+   integer, parameter :: i2 = selected_int_kind(4)
+   !> Length of default integers, range -2³¹ to 2³¹-1; 32 bits
+   integer, parameter :: i4 = selected_int_kind(9)
+   !> Long length for integers, range -2⁶³ to 2⁶³-1; 64 bits
+   integer, parameter :: i8 = selected_int_kind(18)
+
+end module kind_parameter
+
+
+

Floating point constants should always be declared including a kind parameter suffix:

+
real(dp) :: a, b, c
+a = 1.0_dp
+b = 3.5_dp
+c = 1.34e8_dp
+
+
+

It is safe to assign integers to floating point numbers without losing accuracy:

+
real(dp) :: a
+a = 3
+
+
+

In order to impose floating point division (as opposed to integer +division 3/4 equal to 0), one can convert the integer to a floating +point number by:

+
real(dp) :: a
+a = real(3, dp) / 4  ! 'a' is equal to 0.75_dp
+
+
+

or simply separate the integer division with multiplication by 1.0_dp

+
real(dp) :: a
+a = 3 * 1.0_dp / 4  ! 'a' is equal to 0.75_dp
+
+
+

To print floating point numbers without losing precision use the unlimited +format specifier (g0) or the exponential representation (es24.16e3), +which will give you 17 significant digits of printout.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/index.html b/learn/best_practices/index.html new file mode 100644 index 000000000000..8ff4ea25c16a --- /dev/null +++ b/learn/best_practices/index.html @@ -0,0 +1,753 @@ + + + + + + + + + Fortran Best Practices — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Fortran Best Practices#

+

This mini-book collects a modern canonical way of doing things in Fortran. +It serves as a style guide and best practice recommendation for popular topics +and common tasks. Generally, a canonical solution or pattern is presented and +discussed. It is meant for programmers with basic familiarity of the Fortran syntax +and programming in general.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/integer_division/index.html b/learn/best_practices/integer_division/index.html new file mode 100644 index 000000000000..1e677bb06966 --- /dev/null +++ b/learn/best_practices/integer_division/index.html @@ -0,0 +1,779 @@ + + + + + + + + + Integer Division — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Integer Division#

+

Fortran distinguishes between floating point and integer arithmetic. It is +important to note that division for integers is always using integer +arithmetic. Furthermore, while Fortran uses the standard order-of-operations +(e.g. multiplication and division preceed addition and subtraction, in the +absence of parenthesis), operations of the same precedence are evaluated from +left to right. Consider the following example for integer division of an odd +number:

+
integer :: n
+n = 3
+print *, n / 2  ! prints 1
+print *, n*(n + 1)/2  ! prints 6
+print *, n/2*(n + 1)  ! prints 4 (left-to-right evaluation order)
+n = -3
+print *, n / 2  ! prints -1
+
+
+

Be careful about whether you want to actually use integer arithmetic +in this context. If you want to use floating point arithmetic instead +make sure to cast to reals before using the division operator, or separate +the integers by multiplying by 1.0_dp:

+
integer :: n
+n = 3
+print *, real(n, dp) / 2  ! prints 1.5
+print *, n * 1.0_dp / 2  ! prints 1.5
+n = -3
+print *, real(n, dp) / 2  ! prints -1.5
+print *, n * 1.0_dp / 2  ! prints -1.5
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/modules_programs/index.html b/learn/best_practices/modules_programs/index.html new file mode 100644 index 000000000000..f0486c0c5b25 --- /dev/null +++ b/learn/best_practices/modules_programs/index.html @@ -0,0 +1,879 @@ + + + + + + + + + Modules and Programs — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Modules and Programs#

+

Modules are the preferred way create modern Fortran libraries and applications. +As a convention, one source file should always contain only one module, while +the module name should match the filepath to allow easy navigation in larger +projects. It is also recommended to prefix module names with the library name +to avoid name clashes when used as dependency in other projects.

+

An example for such a module file is given here

+
!> Interface to TOML processing library.
+!>
+!> ...
+module fpm_toml
+  use fpm_error, only : error_t, fatal_error, file_not_found_error
+  use fpm_strings, only : string_t
+  use tomlf, only : toml_table, toml_array, toml_key, toml_stat, get_value, &
+    & set_value, toml_parse, toml_error, new_table, add_table, add_array, &
+    & toml_serializer, len
+  implicit none
+  private
+
+  public :: read_package_file
+  public :: toml_table, toml_array, toml_key, toml_stat, get_value, set_value
+  public :: new_table, add_table, add_array, len
+  public :: toml_error, toml_serializer, toml_parse
+
+contains
+
+  !> Process the configuration file to a TOML data structure
+  subroutine read_package_file(table, manifest, error)
+    !> TOML data structure
+    type(toml_table), allocatable, intent(out) :: table
+    !> Name of the package configuration file
+    character(len=*), intent(in) :: manifest
+    !> Error status of the operation
+    type(error_t), allocatable, intent(out) :: error
+    ! ...
+  end subroutine read_package_file
+
+end module fpm_toml
+
+
+

There are a few things in this example module to highlight. First, every module +starts with comments documenting the purpose and content of the module. +Similarly, every procedure starts with a comment briefly describing its +purpose and the intent of the dummy arguments. Documentation is one of the most +important parts of creating long-living software, regardless of language.

+

Second, imports (use) and exports (public) are explicitly given, this +allows on a glance at the module source to check the used and available +procedures, constants and derived types. The imports are usually limited +to the module scope rather than reimported in every procedure or interface +scope. Similarly, exports are made explicitly by adding a private statement +on a single line and explicitly listing all exported symbols in public +statements.

+

Finally, the implicit none statement works for the whole module and there +is no need to repeat it within each procedure.

+

Variables inside a module are static (implicitly saved). It is highly +recommended to limit the usage of module variables to constant expressions, +like parameters or enumerators only or export them as protected rather +than public.

+

Submodules can be used to break long dependency chains and shorten recompilation +cascades in Fortran programs. They also offer the possibility to provide specialized +and optimized implementations without requiring the use of preprocessor.

+

An example from the Fortran standard library is the quadrature module, which +only defines interfaces to module procedures, but no implementations

+
!> Numerical integration
+!>
+!> ...
+module stdlib_quadrature
+  use stdlib_kinds, only: sp, dp, qp
+  implicit none
+  private
+
+  public :: trapz
+  ! ...
+
+  !> Integrates sampled values using trapezoidal rule
+  interface trapz
+    pure module function trapz_dx_dp(y, dx) result(integral)
+      real(dp), intent(in) :: y(:)
+      real(dp), intent(in) :: dx
+      real(dp) :: integral
+    end function trapz_dx_dp
+    module function trapz_x_dp(y, x) result(integral)
+      real(dp), intent(in) :: y(:)
+      real(dp), intent(in) :: x(:)
+      real(dp) :: integral
+    end function trapz_x_dp
+  end interface trapz
+
+  ! ...
+end module stdlib_quadrature
+
+
+

While the implementation is provided in separate submodules like the one for the +trapezoidal integration rule given here.

+
!> Actual implementation of the trapezoidal integration rule
+!>
+!> ...
+submodule (stdlib_quadrature) stdlib_quadrature_trapz
+  use stdlib_error, only: check
+  implicit none
+
+contains
+
+  pure module function trapz_dx_dp(y, dx) result(integral)
+    real(dp), intent(in) :: y(:)
+    real(dp), intent(in) :: dx
+    real(dp) :: integral
+    integer :: n
+
+    n = size(y)
+    select case (n)
+    case (0:1)
+      integral = 0.0_dp
+    case (2)
+      integral = 0.5_dp*dx*(y(1) + y(2))
+    case default
+      integral = dx*(sum(y(2:n-1)) + 0.5_dp*(y(1) + y(n)))
+    end select
+  end function trapz_dx_dp
+
+  ! ...
+end submodule stdlib_quadrature_trapz
+
+
+

Note that the module procedures do not have to be implemented in the same submodule. +Several submodules can be used to reduce the compilation load for huge modules.

+

Finally, when setting up a program, it is recommended to keep the actual implementations +in the program body at minimum. Reusing implementations from modules allows you to write +reusable code and focus the program unit on conveying user input to the respective library +functions and objects.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/multidim_arrays/index.html b/learn/best_practices/multidim_arrays/index.html new file mode 100644 index 000000000000..ffb5f9a424a8 --- /dev/null +++ b/learn/best_practices/multidim_arrays/index.html @@ -0,0 +1,806 @@ + + + + + + + + + Multidimensional Arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Multidimensional Arrays#

+

Multidimensional arrays are stored in column-major order. This means the +left-most (inner-most) index addresses elements contiguously. +From a practical point this means that the array slice V(:, 1) is +contiguous, while the stride between elements in the slice V(1, :) +is the dimension of the columns. This is important when passing array +slices to procedures which expect to work on contiguous data.

+

The locality of the memory is important to consider depending on +your application, usually when performing operations on a multidimensional +the sequential access should always advance in unity strides.

+

In the following example the inverse distance between two sets of points +is evaluated. Note that the points are stored contiguously in the arrays +xyz1/xyz2, while the inner-most loop is advancing the left-most +index of the matrix a.

+
subroutine coulomb_matrix(xyz1, xyz2, a)
+  real(dp), intent(in) :: xyz1(:, :)
+  real(dp), intent(in) :: xyz2(:, :)
+  real(dp), intent(out) :: a(:, :)
+  integer :: i, j
+  do i = 1, size(a, 2)
+    do j = 1, size(a, 1)
+      a(j, i) = 1.0_dp/norm2(xyz1(:, j) - xyz2(:, i))
+    end do
+  end do
+end subroutine coulomb_matrix
+
+
+

Another example would be the contraction of the third dimension of a rank +three array:

+
do i = 1, size(amat, 3)
+  do j = 1, size(amat, 2)
+    do k = 1, size(amat, 1)
+      cmat(k, j) = cmat(k, j) + amat(k, j, i) * bvec(i)
+    end do
+  end do
+end do
+
+
+

Contiguous array slices can be used in array-bound remapping to allow usage +of higher rank arrays as lower rank arrays without requiring to reshape +and potentially create a temporary copy of the array.

+

For example this can be used to contract the third dimension of a rank +three array using a matrix-vector operation:

+
subroutine matmul312(amat, bvec, cmat)
+  real(dp), contiguous, intent(in), target :: amat(:, :, :)
+  real(dp), intent(in) :: bvec(:)
+  real(dp), contiguous, intent(out), target :: cmat(:, :)
+  real(dp), pointer :: aptr(:, :)
+  real(dp), pointer :: cptr(:)
+
+  aptr(1:size(amat, 1)*size(amat, 2), 1:size(amat, 3)) => amat
+  cptr(1:size(cmat)) => cmat
+
+  cptr = matmul(aptr, bvec)
+end subroutine matmul312
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/style_guide/index.html b/learn/best_practices/style_guide/index.html new file mode 100644 index 000000000000..c9ae34f5b9ab --- /dev/null +++ b/learn/best_practices/style_guide/index.html @@ -0,0 +1,819 @@ + + + + + + + + + Fortran Style Guide — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Fortran Style Guide#

+
+

Naming Convention#

+

Ultimately this is a matter of preference. Here is a style guide that we +like and that seems to be prevalent in most scientific codes (as well as +the Fortran standard library), and you are welcome to follow it.

+
    +
  1. Use lowercase for all Fortran constructs (do, subroutine, +module, …).

  2. +
  3. Follow short mathematical notation for mathematical +variables/functions (Ylm, Gamma, gamma, Enl, Rnl, …).

  4. +
  5. For other names use all lowercase: try to keep names to one or two +syllables; if more are required, use underscores to clarify +(sortpair, whitechar, meshexp, numstrings, linspace, +meshgrid, argsort, spline, spline_interp, +spline_interpolate, stoperr, stop_error, meshexp_der).

  6. +
+

For example “spline interpolation” can be shortened to +spline_interpolation, spline_interpolate, spline_interp, spline, +but not to splineint (“int” could mean integration, integer, etc. — +too much ambiguity, even in the clear context of a computational code). +This is in contrast to get_argument() where getarg() is perfectly +clean and clear.

+

The above are general guidelines. In general, choosing the right name +certainly depends on the word being truncated as to whether the first +syllable is sufficient. Usually it is but clearly not always. Thus some +thought should go into step “try to keep names to 2 syllables or less” +since it can really affect the indicativeness and simplicity. Simple +consistent naming rules are a real help in this regard – for both +collaboration and for one’s own sanity when going back to some old code +you haven’t seen in while.

+
+
+

Indentation#

+

Use a consistent indentation to make your code readable. +The amount of indentation is a matter of preference, the most common choices +are two, three or four spaces.

+
+
+

Comparison to Other Languages#

+

On the other hand, in most of the rest of the programming world, where +the main focus is, in one form or another, on defining and using large +sets of complex objects, with tons of properties and behaviors, known +only in the code in which they are defined (as opposed to defined by the +same notation throughout the literature), it makes more sense to use +longer, more descriptive names. The naming conventions one sees used in +more general-purpose languages such as C++ and Python, therefore, are +perfectly consistent with their more general-purpose missions. But +Fortran has a different mission (numerical scientific computing).

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/best_practices/type_casting/index.html b/learn/best_practices/type_casting/index.html new file mode 100644 index 000000000000..64e9b811ef20 --- /dev/null +++ b/learn/best_practices/type_casting/index.html @@ -0,0 +1,1256 @@ + + + + + + + + + Type Casting in Callbacks — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Type Casting in Callbacks#

+

There are essentially five different ways to do type casting, each with its own +advantages and disadvantages.

+

The methods I, II and V can be used both in C and Fortran. The methods +III and IV are only available in Fortran. The method VI is obsolete and +should not be used.

+
+

Work Arrays#

+

Pass a “work array” which is packed with everything needed by +the caller and unpacked by the called routine. This is the old way – +e.g., how LAPACK does it.

+

Integrator:

+
module integrals
+  use types, only: dp
+  implicit none
+  private
+  public simpson
+
+contains
+
+real(dp) function simpson(f, a, b, data) result(s)
+  real(dp), intent(in) :: a, b
+  interface
+    real(dp) function func(x, data)
+    use types, only: dp
+    implicit none
+    real(dp), intent(in) :: x
+    real(dp), intent(inout) :: data(:)
+    end function
+  end interface
+  procedure(func) :: f
+  real(dp), intent(inout) :: data(:)
+  s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data))
+end function
+
+end module
+
+
+

Usage:

+
module test
+  use types, only: dp
+  use integrals, only: simpson
+  implicit none
+  private
+  public foo
+
+contains
+
+real(dp) function f(x, data) result(y)
+  real(dp), intent(in) :: x
+  real(dp), intent(inout) :: data(:)
+  real(dp) :: a, k
+  a = data(1)
+  k = data(2)
+  y = a*sin(k*x)
+end function
+
+subroutine foo(a, k)
+  real(dp) :: a, k
+  real(dp) :: data(2)
+  data(1) = a
+  data(2) = k
+  print *, simpson(f, 0._dp, pi, data)
+  print *, simpson(f, 0._dp, 2*pi, data)
+end subroutine
+
+end module
+
+
+
+
+

General Structure#

+

Define a general structure which encompass the variations you +actually need (or are even remotely likely to need going forward). This +single structure type can then change if needed as future +needs/ideas permit but won’t likely need to change from passing, say, +real numbers to, say, and instantiation of a text editor.

+

Integrator:

+
module integrals
+  use types, only: dp
+  implicit none
+  private
+  public simpson, context
+
+  type context
+    ! This would be adjusted according to the problem to be solved.
+    ! For example:
+    real(dp) :: a, b, c, d
+    integer :: i, j, k, l
+    real(dp), pointer :: x(:), y(:)
+    integer, pointer :: z(:)
+  end type
+
+contains
+
+real(dp) function simpson(f, a, b, data) result(s)
+  real(dp), intent(in) :: a, b
+  interface
+    real(dp) function func(x, data)
+    use types, only: dp
+    implicit none
+    real(dp), intent(in) :: x
+    type(context), intent(inout) :: data
+    end function
+  end interface
+  procedure(func) :: f
+  type(context), intent(inout) :: data
+  s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data))
+end function
+
+end module
+
+
+

Usage:

+
module test
+  use types, only: dp
+  use integrals, only: simpson, context
+  implicit none
+  private
+  public foo
+
+contains
+
+real(dp) function f(x, data) result(y)
+  real(dp), intent(in) :: x
+  type(context), intent(inout) :: data
+  real(dp) :: a, k
+  a = data%a
+  k = data%b
+  y = a*sin(k*x)
+end function
+
+subroutine foo(a, k)
+  real(dp) :: a, k
+  type(context) :: data
+  data%a = a
+  data%b = k
+  print *, simpson(f, 0._dp, pi, data)
+  print *, simpson(f, 0._dp, 2*pi, data)
+end subroutine
+
+end module
+
+
+

There is only so much flexibility really needed. For example, you could +define two structure types for this purpose, one for Schroedinger and +one for Dirac. Each would then be sufficiently general and contain all +the needed pieces with all the right labels.

+

Point is: it needn’t be “one abstract type to encompass all” or bust. +There are natural and viable options between “all” and “none”.

+
+
+

Private Module Variables#

+

Hide the variable arguments completely by passing in module variables.

+

Integrator:

+
module integrals
+  use types, only: dp
+  implicit none
+  private
+  public simpson
+
+contains
+
+real(dp) function simpson(f, a, b) result(s)
+  real(dp), intent(in) :: a, b
+  interface
+    real(dp) function func(x)
+    use types, only: dp
+    implicit none
+    real(dp), intent(in) :: x
+    end function
+  end interface
+  procedure(func) :: f
+  s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b))
+end function
+
+end module
+
+
+

Usage:

+
module test
+  use types, only: dp
+  use integrals, only: simpson
+  implicit none
+  private
+  public foo
+
+  real(dp) :: global_a, global_k
+
+contains
+
+real(dp) function f(x) result(y)
+  real(dp), intent(in) :: x
+  y = global_a*sin(global_k*x)
+end function
+
+subroutine foo(a, k)
+  real(dp) :: a, k
+  global_a = a
+  global_k = k
+  print *, simpson(f, 0._dp, pi)
+  print *, simpson(f, 0._dp, 2*pi)
+end subroutine
+
+end module
+
+
+

However it is best to avoid such global variables – even though really +just semi-global – if possible. But sometimes it may be the simplest +cleanest way. However, with a bit of thought, usually there is a better, +safer, more explicit way along the lines of II or IV.

+
+
+

Nested functions#

+

Integrator:

+
module integrals
+  use types, only: dp
+  implicit none
+  private
+  public simpson
+
+contains
+
+real(dp) function simpson(f, a, b) result(s)
+  real(dp), intent(in) :: a, b
+  interface
+    real(dp) function func(x)
+    use types, only: dp
+    implicit none
+    real(dp), intent(in) :: x
+    end function
+  end interface
+  procedure(func) :: f
+  s = (b-a) / 6 * (f(a) + 4*f((a+b)/2) + f(b))
+end function
+
+end module
+
+
+

Usage:

+
subroutine foo(a, k)
+use integrals, only: simpson
+real(dp) :: a, k
+print *, simpson(f, 0._dp, pi)
+print *, simpson(f, 0._dp, 2*pi)
+
+contains
+
+real(dp) function f(x) result(y)
+real(dp), intent(in) :: x
+y = a*sin(k*x)
+end function f
+
+end subroutine foo
+
+
+
+
+

Using type(c_ptr) Pointer#

+

In C, one would use the void * pointer. In Fortran, one can use +type(c_ptr) for exactly the same purpose.

+

Integrator:

+
module integrals
+  use types, only: dp
+  use iso_c_binding, only: c_ptr
+  implicit none
+  private
+  public simpson
+
+contains
+
+real(dp) function simpson(f, a, b, data) result(s)
+  real(dp), intent(in) :: a, b
+  interface
+    real(dp) function func(x, data)
+    use types, only: dp
+    implicit none
+    real(dp), intent(in) :: x
+    type(c_ptr), intent(in) :: data
+    end function
+  end interface
+  procedure(func) :: f
+  type(c_ptr), intent(in) :: data
+  s = (b-a) / 6 * (f(a, data) + 4*f((a+b)/2, data) + f(b, data))
+end function
+
+end module
+
+
+

Usage:

+
module test
+  use types, only: dp
+  use integrals, only: simpson
+  use iso_c_binding, only: c_ptr, c_loc, c_f_pointer
+  implicit none
+  private
+  public foo
+
+  type f_data
+    ! Only contains data that we need for our particular callback.
+    real(dp) :: a, k
+  end type
+
+contains
+
+real(dp) function f(x, data) result(y)
+  real(dp), intent(in) :: x
+  type(c_ptr), intent(in) :: data
+  type(f_data), pointer :: d
+  call c_f_pointer(data, d)
+  y = d%a * sin(d%k * x)
+end function
+
+subroutine foo(a, k)
+  real(dp) :: a, k
+  type(f_data), target :: data
+  data%a = a
+  data%k = k
+  print *, simpson(f, 0._dp, pi, c_loc(data))
+  print *, simpson(f, 0._dp, 2*pi, c_loc(data))
+end subroutine
+
+end module
+
+
+

As always, with the advantages of such re-casting, as Fortran lets you +do if you really want to, come also the disadvantages that fewer +compile- and run-time checks are possible to catch errors; and with +that, inevitably more leaky, bug-prone code. So one always has to +balance the costs and benefits.

+

Usually, in the context of scientific programming, where the main thrust +is to represent and solve precise mathematical formulations (as opposed +to create a GUI with some untold number of buttons, drop-downs, and +other interface elements), simplest, least bug-prone, and fastest is to +use one of the previous approaches.

+
+
+

transfer() Intrinsic Function#

+

Before Fortran 2003, the only way to do type casting was using the +transfer intrinsic function. It is functionally equivalent to the +method V, but more verbose and more error prone. It is now obsolete and +one should use the method V instead.

+

Examples:

+

http://jblevins.org/log/transfer

+

http://jblevins.org/research/generic-list.pdf

+

http://www.macresearch.org/advanced_fortran_90_callbacks_with_the_transfer_function

+
+
+

Object Oriented Approach#

+

The module:

+
module integrals
+
+  use types, only: dp
+  implicit none
+  private
+
+  public :: integrand, simpson
+
+  ! User extends this type
+  type, abstract :: integrand
+  contains
+    procedure(func), deferred :: eval
+  end type
+
+  abstract interface
+    function func(this, x) result(fx)
+      import :: integrand, dp
+      class(integrand) :: this
+      real(dp), intent(in) :: x
+      real(dp) :: fx
+    end function
+  end interface
+
+contains
+
+real(dp) function simpson(f, a, b) result(s)
+  class(integrand) :: f
+  real(dp), intent(in) :: a, b
+  s = ((b-a)/6) * (f%eval(a) + 4*f%eval((a+b)/2) + f%eval(b))
+end function
+
+end module
+
+
+

The abstract type prescribes exactly what the integration routine needs, +namely a method to evaluate the function, but imposes nothing else on +the user. The user extends this type, providing a concrete +implementation of the eval type bound procedure and adding necessary +context data as components of the extended type.

+

Usage:

+
module example_usage
+
+  use types, only: dp
+  use integrals, only: integrand, simpson
+  implicit none
+  private
+
+  public :: foo
+
+  type, extends(integrand) :: my_integrand
+    real(dp) :: a, k
+  contains
+    procedure :: eval => f
+  end type
+
+contains
+
+function f(this, x) result(fx)
+  class(my_integrand) :: this
+  real(dp), intent(in) :: x
+  real(dp) :: fx
+  fx = this%a*sin(this%k*x)
+end function
+
+subroutine foo(a, k)
+  real(dp) :: a, k
+  type(my_integrand) :: my_f
+  my_f%a = a
+  my_f%k = k
+  print *, simpson(my_f, 0.0_dp, 1.0_dp)
+  print *, simpson(my_f, 0.0_dp, 2.0_dp)
+end subroutine
+
+end module
+
+
+
+
+

Complete Example of void * vs type(c_ptr) and transfer()#

+

Here are three equivalent codes: one in C using void * and two codes +in Fortran using type(c_ptr) and transfer():

+ + + + + + + + + + + + + + + + + + + + + +

Language  

Method

Link

C

void *

https://gist.github.com/1665641

Fortran

type(c_ptr)  

https://gist.github.com/1665626

Fortran

transfer()

https://gist.github.com/1665630

+

The C code uses the standard C approach for writing extensible libraries +that accept callbacks and contexts. The two Fortran codes show how to do +the same. The type(c_ptr) method is equivalent to the C version and +that is the approach that should be used.

+

The transfer() method is here for completeness only (before Fortran +2003, it was the only way) and it is a little cumbersome, because the +user needs to create auxiliary conversion functions for each of his +types. As such, the type(c_ptr) method should be used instead.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/build_tools/index.html b/learn/building_programs/build_tools/index.html new file mode 100644 index 000000000000..d8c02284a1aa --- /dev/null +++ b/learn/building_programs/build_tools/index.html @@ -0,0 +1,1264 @@ + + + + + + + + + Build tools — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Build tools#

+

Compiling your Fortran projects by hand can become quite complicated depending +on the number of source files and the interdependencies through the module. +Supporting different compilers and linkers or different platforms can become +increasingly complicated unless the right tools are used to automatically +perform those tasks.

+

Depending on the size of your project and the purpose of project different +options for the build automation can be used.

+

First, your integrated development environment probably provides a way to build +your program. A popular cross-platform tool is Microsoft’s +Visual Studio Code, +but others exist, such as +Atom, +Eclipse Photran, +and Code::Blocks. +They offer a graphical user-interface, but are often very specific for the +compiler and platform.

+

For smaller projects, the rule based build system make is a common +choice. Based on the rules defined it can perform task like (re)compiling +object files from updated source files, creating libraries and linking +executables. +To use make for your project you have to encode those rules in Makefile, +which defines the interdependencies of all the final program, the intermediary +object files or libraries and the actual source files. +For a short introduction see the guide on make.

+

Maintenance tools like autotools and CMake can generate Makefiles or +Visual Studio project files via a high-level description. They abstract +away from the compiler and platform specifics.

+

Which of those tools are the best choice for your projects depends on many factors. +Choose a build tool you are comfortable working with, it should not get in your +way while developing. Spending more time on working against your build tools +than doing actual development work can quickly become frustrating.

+

Also, consider the accessibility of your build tools. +If it is restricted to a specific integrated development environment, can all +developers on your project access it? +If you are using a specific build system, does it work on all platforms you +are developing for? +How large is the entry barrier of your build tools? Consider the learning curve +for the build tools, the perfect build tool will be of no use, if you have to +learn a complex programming language first to add a new source file. +Finally, consider what other project are using, those you are depending on and +those that use (or will use) your project as dependency.

+
+

Using make as build tool#

+

The most well-known and commonly used build system is called make. +It performs actions following rules defined in a configuration file +called Makefile or makefile, which usually leads to compiling a program +from the provided source code.

+
+

Tip

+

For an in-depth make tutorial lookup its info page. There is an online version of this info page, available.

+
+

We will start with the basics from your clean source directory. Create and open +the file Makefile, we start with a simple rule called all:

+
all:
+	echo "$@"
+
+
+

After saving the Makefile run it by executing make in the same directory. +You should see the following output:

+
echo "all"
+all
+
+
+

First, we note that make is substituting $@ for the name of the rule, +the second thing to note is that make is always printing the command it is +running, finally, we see the result of running echo "all".

+
+

Note

+

We call the entry point of our Makefile always all by convention, but you can choose whatever name you like.

+
+
+

Note

+

You should not have noticed it if your editor is working correctly, +but you have to indent the content of a rule with a tab character. +In case you have problems running the above Makefile and see an error like

+
Makefile:2: *** missing separator.  Stop.
+
+
+

The indentation is probably not correct. In this case replace the indentation +in the second line with a tab character.

+
+

Now we want to make our rules more complicated, therefore we add another rule:

+
PROG := my_prog
+
+all: $(PROG)
+	echo "$@ depends on $^"
+
+$(PROG):
+	echo "$@"
+
+
+

Note how we declare variables in make, you should always declare your local +variables with :=. To access the content of a variable we use the $(...), +note that we have to enclose the variable name in parenthesis.

+
+

Note

+

The declaration of variables is usually done with :=, but make does +support recursively expanded variables as well with =. +Normally, the first kind of declaration is wanted, as they are more predictable +and do not have a runtime overhead from the recursive expansion.

+
+

We introduced a dependency of the rule all, namely the content of the variable +PROG, also we modified the printout, we want to see all the dependencies +of this rule, which are stored in the variable $^. +Now for the new rule which we name after the value of the variable PROG, +it does the same thing we did before for the rule all, note how the value +of $@ is dependent on the rule it is used in.

+

Again check by running the make, you should see:

+
echo "my_prog"
+my_prog
+echo "all depends on my_prog"
+all depends on my_prog
+
+
+

The dependency has been correctly resolved and evaluated before performing +any action on the rule all. +Let’s run only the second rule: type make my_prog and you will only find +the first two lines in your terminal.

+

The next step is to perform some real actions with make, we take +the source code from the previous chapter here and add new rules to our +Makefile:

+
OBJS := tabulate.o functions.o
+PROG := my_prog
+
+all: $(PROG)
+
+$(PROG): $(OBJS)
+	gfortran -o $@ $^
+
+$(OBJS): %.o: %.f90
+	gfortran -c -o $@ $<
+
+
+

We define OBJS which stands for object files, our program depends on +those OBJS and for each object file we create a rule to make them from +a source file. +The last rule we introduced is a pattern matching rule, % is the common +pattern between tabulate.o and tabulate.f90, which connects our object file +tabulate.o to the source file tabulate.f90. +With this set, we run our compiler, here gfortran and translate the source +file into an object file, we do not create an executable yet due to the -c +flag. +Note the usage of the $< for the first element of the dependencies here.

+

After compiling all the object files we attempt to link the program, we do not +use a linker directly, but gfortran to produce the executable.

+

Now we run the build script with make:

+
gfortran -c -o tabulate.o tabulate.f90
+tabulate.f90:2:7:
+
+    2 |    use user_functions
+      |       1
+Fatal Error: Cannot open module file ‘user_functions.mod’ for reading at (1): No such file or directory
+compilation terminated.
+make: *** [Makefile:10: tabulate.f90.o] Error 1
+
+
+

We remember that we have dependencies between our source files, therefore we add +this dependency explicitly to the Makefile with

+
tabulate.o: functions.o
+
+
+

Now we can retry and find that the build is working correctly. The output should +look like

+
gfortran -c -o functions.o functions.f90
+gfortran -c -o tabulate.o tabulate.f90
+gfortran -o my_prog tabulate.o functions.o
+
+
+

You should find four new files in the directory now. +Run my_prog to make sure everything works as expected. +Let’s run make again:

+
make: Nothing to be done for 'all'.
+
+
+

Using the timestamps of the executable make was able to determine, it is +newer than both tabulate.o and functions.o, which in turn are newer than +tabulate.f90 and functions.f90. +Therefore, the program is already up-to-date with the latest code and no +action has to be performed.

+

In the end, we will have a look at a complete Makefile.

+
# Disable all of make's built-in rules (similar to Fortran's implicit none)
+MAKEFLAGS += --no-builtin-rules --no-builtin-variables
+# configuration
+FC := gfortran
+LD := $(FC)
+RM := rm -f
+# list of all source files
+SRCS := tabulate.f90 functions.f90
+PROG := my_prog
+
+OBJS := $(addsuffix .o, $(SRCS))
+
+.PHONY: all clean
+all: $(PROG)
+
+$(PROG): $(OBJS)
+	$(LD) -o $@ $^
+
+$(OBJS): %.o: %
+	$(FC) -c -o $@ $<
+
+# define dependencies between object files
+tabulate.f90.o: functions.f90.o user_functions.mod
+
+# rebuild all object files in case this Makefile changes
+$(OBJS): $(MAKEFILE_LIST)
+
+clean:
+	$(RM) $(filter %.o, $(OBJS)) $(wildcard *.mod) $(PROG)
+
+
+

Since you are starting with make we highly recommend to always include +the first line, like with Fortran’s implicit none we do not want to have +implicit rules messing up our Makefile in surprising and harmful ways.

+

Next, we have a configuration section where we define variables, in case you +want to switch out your compiler, it can be easily done here. +We also introduced the SRCS variable to hold all source files, which is +more intuitive than specifying object files. +We can easily create the object files by appending a .o suffix using the +functions addsuffix. +The .PHONY is a special rule, which should be used for all entry points +of your Makefile, here we define two entry point, we already know all, +the new clean rule deletes all the build artifacts again such that we indeed +start with a clean directory.

+

Also, we slightly changed the build rule for the object files to account for +appending the .o suffix instead of substituting it. +Notice that we still need to explicitly define the interdependencies in the +Makefile. We also added a dependency for the object files on the Makefile +itself, in case you change the compiler, this will allow you to safely rebuild.

+

Now you know enough about make to use it for building small projects. +If you plan to use make more extensively, we have compiled a few tips +for you as well.

+
+

Tip

+

In this guide, we avoided and disabled a lot of the commonly used make +features that can be particularly troublesome if not used correctly, we highly +recommend staying away from the builtin rules and variables if you do not feel +confident working with make, but explicitly declare all variables and rules.

+

You will find that make is capable tool to automate short interdependent +workflows and to build small projects. But for larger projects, you will +probably soon run against some of it limitations. Usually, make is therefore +not used alone but combined with other tools to generate the Makefile +completely or in parts.

+
+
+

Recursively expanded variables#

+

Commonly seen in many projects are recursively expanded variables (declared with += instead of :=). Recursive expansion of your variables allows out-of-order +declaration and other neat tricks with make, since they are defined as rules, +which are expanded at runtime, rather than being defined while parsing.

+

For example, declaring and using your Fortran flags with this snippet will work +completely fine:

+
all:
+	echo $(FFLAGS)
+
+FFLAGS = $(include_dirs) -O
+include_dirs += -I./include
+include_dirs += -I/opt/some_dep/include
+
+
+

You should find the expected (or maybe unexpected) printout after running make

+
echo -I./include -I/opt/some_dep/include -O
+-I./include -I/opt/some_dep/include -O
+
+
+
+

Tip

+

appending with += to an undefined variable will produce a recursively expanded variable with this state being inherited for all further appending.

+
+

While, it seems like an interesting feature to use, it tends to lead to +surprising and unexpected outcomes. Usually, when defining variables like your +compiler, there is little reason to actually use the recursive expansion at all.

+

The same can easily be achieved using the := declaration:

+
all:
+	echo $(FFLAGS)
+
+include_dirs := -I./include
+include_dirs += -I/opt/some_dep/include
+FFLAGS := $(include_dirs) -O
+
+
+
+

Important

+

always think of a Makefile as a whole set of rules, it must be parsed completely before any rule can be evaluated.

+
+

You can use whatever kind of variables you like most, mixing them should be done +carefully, of course. It is important to be aware of the differences between the +two kinds and the respective implications.

+
+
+

Comments and whitespace#

+

There are some caveats with whitespace and comments, which might pop up from +time to time when using make. First, make does not know of any data +type except for strings and the default separator is just a space. +This means make will give a hard time trying to build a project which +has spaces in file names. If you encounter such case, renaming the file +is possibly the easiest solution at hand.

+

Another common problem is leading and trailing whitespace, once introduced, +make will happily carry it along and it does in fact make a difference +when comparing strings in make.

+

Those can be introduced by comments like

+
prefix := /usr  # path to install location
+install:
+	echo "$(prefix)/lib"
+
+
+

While the comment will be correctly removed by make, the trailing two spaces +are now part of the variable content. Run make and check that this is indeed +the case:

+
echo "/usr  /lib"
+/usr  /lib
+
+
+

To solve this issue, you can either move the comment, or strip the whitespace with +the strip function instead. Alternatively, you could try to join the +strings.

+
prefix := /usr  # path to install location
+install:
+	echo "$(strip $(prefix))/lib"
+	echo "$(join $(join $(prefix), /), lib)"
+
+
+

All in all, none of this solutions will make your Makefile more readable, +therefore, it is prudent to pay extra attention to whitespace and comments when +writing and using make.

+
+
+
+

The meson build system#

+

After you have learned the basics of make, which we call a low-level build +system, we will introduce meson, a high-level build system. +While you specify in a low-level build system how to build your program, +you can use a high-level build system to specify what to build. +A high-level build system will deal for you with how and generate +build files for a low-level build system.

+

There are plenty of high-level build systems available, but we will focus on +meson because it is constructed to be particularly user friendly. +The default low-level build-system of meson is called ninja.

+

Let’s have a look at a complete meson.build file:

+ +
project('my_proj', 'fortran', meson_version: '>=0.49')
+executable('my_prog', files('tabulate.f90', 'functions.f90'))
+
+
+

And we are already done, the next step is to configure our low-level build system +with meson setup build, you should see output somewhat similar to this

+
The Meson build system
+Version: 0.53.2
+Source dir: /home/awvwgk/Examples
+Build dir: /home/awvwgk/Examples/build
+Build type: native build
+Project name: my_proj
+Project version: undefined
+Fortran compiler for the host machine: gfortran (gcc 9.2.1 "GNU Fortran (Arch Linux 9.2.1+20200130-2) 9.2.1 20200130")
+Fortran linker for the host machine: gfortran ld.bfd 2.34
+Host machine cpu family: x86_64
+Host machine cpu: x86_64
+Build targets in project: 1
+
+Found ninja-1.10.0 at /usr/bin/ninja
+
+
+

The provided information at this point is already more detailed than anything +we could have provided in a Makefile, let’s run the build with +ninja -C build, which should show something like

+
[1/4] Compiling Fortran object 'my_prog@exe/functions.f90.o'.
+[2/4] Dep hack
+[3/4] Compiling Fortran object 'my_prog@exe/tabulate.f90.o'.
+[4/4] Linking target my_prog.
+
+
+

Find and test your program at build/my_prog to ensure it works correctly. +We note the steps ninja performed are the same we would have coded up in a +Makefile (including the dependency), yet we did not have to specify them, +have a look at your meson.build file again:

+
project('my_proj', 'fortran', meson_version: '>=0.49')
+executable('my_prog', files('tabulate.f90', 'functions.f90'))
+
+
+

We only specified that we have a Fortran project (which happens to require +a certain version of meson for the Fortran support) and told meson +to build an executable my_prog from the files tabulate.f90 and +functions.f90. +We had not to tell meson how to build the project, it figured this out +by itself.

+
+

Note

+

meson is a cross-platform build system, the project you just specified +for your program can be used to compile binaries for your native operating +system or to cross-compile your project for other platforms. +Similarly, the meson.build file is portable and will work on different +platforms as well.

+
+

The documentation of meson can be found at the +meson-build webpage.

+
+
+

Creating a CMake project#

+

Similar to meson CMake is a high-level build system as well and commonly +used to build Fortran projects.

+
+

Note

+

CMake follows a slightly different strategy and provides you with a complete +programming language to create your build files. +This is has the advantage that you can do almost everything with CMake, +but your CMake build files can also become as complex as the program you are +building.

+
+

Start by creating the file CMakeLists.txt with the content

+
cmake_minimum_required(VERSION 3.7)
+project("my_proj" LANGUAGES "Fortran")
+add_executable("my_prog" "tabulate.f90" "functions.f90")
+
+
+

Similar to meson we are already done with our CMake build file. +We configure our low-level build files with cmake -B build -G Ninja, +you should see output similar to this

+
-- The Fortran compiler identification is GNU 10.2.0
+-- Detecting Fortran compiler ABI info
+-- Detecting Fortran compiler ABI info - done
+-- Check for working Fortran compiler: /usr/bin/f95 - skipped
+-- Checking whether /usr/bin/f95 supports Fortran 90
+-- Checking whether /usr/bin/f95 supports Fortran 90 - yes
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/awvwgk/Examples/build
+
+
+

You might be surprised that CMake tries to use the compiler f95, fortunately +this is just a symbolic link to gfortran on most systems and not the actual +f95 compiler. +To give CMake a better hint you can export the environment variable FC=gfortran +rerunning should show the correct compiler name now

+
-- The Fortran compiler identification is GNU 10.2.0
+-- Detecting Fortran compiler ABI info
+-- Detecting Fortran compiler ABI info - done
+-- Check for working Fortran compiler: /usr/bin/gfortran - skipped
+-- Checking whether /usr/bin/gfortran supports Fortran 90
+-- Checking whether /usr/bin/gfortran supports Fortran 90 - yes
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/awvwgk/Example/build
+
+
+

In a similar manner you could use your Intel Fortran compiler instead to build +your project (set FC=ifort).

+

CMake provides support for several low-level build files, since the default is +platform specific, we will just use ninja since we already used it together +with meson. As before, build your project with ninja -C build:

+
[1/6] Building Fortran preprocessed CMakeFiles/my_prog.dir/functions.f90-pp.f90
+[2/6] Building Fortran preprocessed CMakeFiles/my_prog.dir/tabulate.f90-pp.f90
+[3/6] Generating Fortran dyndep file CMakeFiles/my_prog.dir/Fortran.dd
+[4/6] Building Fortran object CMakeFiles/my_prog.dir/functions.f90.o
+[5/6] Building Fortran object CMakeFiles/my_prog.dir/tabulate.f90.o
+[6/6] Linking Fortran executable my_prog
+
+
+

Find and test your program at build/my_prog to ensure it works correctly. +The steps ninja performed are somewhat different, because there is usually +more than one way to write the low-level build files to accomplish the task +of building a project. Fortunately, we do not have to concern ourselves but have +our build system handle those details for us.

+

Finally, we will shortly recap on our complete CMakeLists.txt to specify +our project:

+
cmake_minimum_required(VERSION 3.7)
+project("my_proj" LANGUAGES "Fortran")
+add_executable("my_prog" "tabulate.f90" "functions.f90")
+
+
+

We specified that we have a Fortran project and told CMake to create an executable +my_prog from the files tabulate.f90 and functions.f90. +CMake knows the details how to build the executable from the specified sources, +so we do not have to worry about the actual steps in the build process.

+
+

Tip

+

CMake’s official reference can be found at the +<a href=”https://cmake.org/cmake/help/latest/”, target=”_blank” rel=”noopener”>CMake webpage. +It is organised in manpages, which are also available with your local CMake +installation as well using man cmake. While it covers all functionality of +CMake, it sometimes covers them only very briefly.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/compiling_source/index.html b/learn/building_programs/compiling_source/index.html new file mode 100644 index 000000000000..3cc43a433556 --- /dev/null +++ b/learn/building_programs/compiling_source/index.html @@ -0,0 +1,840 @@ + + + + + + + + + Compiling the source code — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Compiling the source code#

+

The first step in the build process is to compile the source code. The +output from this step is generally known as the object code — a set of +instructions for the computer generated from the human-readable source +code. Different compilers will produce different object codes from the +same source code and the naming conventions are different.

+

The consequences:

+
    +
  • If you use a particular compiler for one source file, you need to use +the same compiler (or a compatible one) for all other pieces. After +all, a program may be built from many different source files and the +compiled pieces have to cooperate.

  • +
  • Each source file will be compiled and the result is stored in a file +with an extension like “.o” or “.obj”. It is these object files that are +the input for the next step: the link process.

  • +
+

Compilers are complex pieces of software: they have to understand the +language in much more detail and depth than the average programmer. They +also need to understand the inner working of the computer. And then, +over the years they have been extended with numerous options to +customise the compilation process and the final program that will be +built.

+

But the basics are simple enough. Take the gfortran compiler, part of +the GNU compiler collection. To compile a simple program as the one +above, that consists of one source file, you run the following command, +assuming the source code is stored in the file “hello.f90”:

+
$ gfortran -c hello.f90
+
+
+

This results in a file “hello.o” (as the gfortran compiler uses “.o” as +the extension for the object files).

+

The option “-c” means: only compile the source files. If you were to +leave it out, then the default action of the compiler is to compile the +source file and start the linker to build the actual executable program. +The command:

+
$ gfortran hello.f90
+
+
+

results in an executable file, “a.out” on Linux or “a.exe” on +Windows.

+

Some remarks:

+
    +
  • The compiler may complain about the contents of the source file, if it +finds something wrong with it — a typo for instance or an unknown +keyword. In that case the compilation process is broken off and you will +not get an object file or an executable program. For instance, if +the word “program” was inadvertently typed as “prgoram”:

  • +
+
$ gfortran hello3.f90
+hello.f90:1:0:
+
+    1 | prgoram hello
+      |
+Error: Unclassifiable statement at (1)
+hello3.f90:3:17:
+
+    3 | end program hello
+      |                 1
+Error: Syntax error in END PROGRAM statement at (1)
+f951: Error: Unexpected end of file in 'hello.f90'
+
+
+

Using this compilation report you can correct the source code and try +again.

+
    +
  • The step without “-c” can only succeed if the source file contains a +main program — characterised by the program statement in Fortran. +Otherwise the link step will complain about a missing “symbol”, something +along these lines:

  • +
+
$ gfortran hello2.f90
+/usr/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+
+
+

The file “hello2.f90” is almost the same as the file “hello.f90”, except +that the keyword program has been replaced by the keyword subroutine.

+

The above examples of output from the compiler will differ per compiler +and platform on which it runs. These examples come from the gfortran +compiler running in a Cygwin environment on Windows.

+

Compilers also differ in the options they support, but in general:

+
    +
  • Options for optimising the code — resulting in faster programs or +smaller memory footprints;

  • +
  • Options for checking the source code — checks that a variable is not +used before it has been given a value, for instance or checks if some +extension to the language is used;

  • +
  • Options for the location of include or module files, see below;

  • +
  • Options for debugging.

  • +
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/distributing/index.html b/learn/building_programs/distributing/index.html new file mode 100644 index 000000000000..dd2238733d86 --- /dev/null +++ b/learn/building_programs/distributing/index.html @@ -0,0 +1,875 @@ + + + + + + + + + Distributing your programs — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Distributing your programs#

+

When you distribute your programs, there are a number of options you can +choose from:

+
    +
  1. Distribute the entire source code

  2. +
  3. Distribute a pre-built executable program

  4. +
  5. Distribute static or dynamic libraries that people can use

  6. +
+

Option 1: Distribute the entire source code

+

By far the simplest — for you as a programmer — is this one: you leave it +up to the user to build it on their own machine. Unfortunately, that +means you will have to have a user-friendly build system in place and +the user will have to have access to suitable compilers. For build systems: +see the previous section.

+

Option 2: Distribute a pre-built executable program

+

A pre-built program that does not need to be customised, other than via its +input, will still need to come with the various run-time libraries and will +be specific to the operating system/environment it was built for.

+

The set of run-time libraries differs per operating system and compiler version. +For a freely available compiler like gfortran, the easiest thing is to ask the +user to install that compiler on their system. In the case of Windows: the Cygwin +environment may be called for.

+

Alternatively, you can supply copies of the run-time libraries together with your +program. Put them in the directory where they can be found at run-time.

+

Note: On Windows, the Intel Fortran comes with a set of redistributable libraries. +These will need to be made available.

+

In general: use a tool like “ldd” or “dependency walker” to find out what +libraries are required and consult the documentation of the compiler.

+

If your program does allow customisation, consider using dynamic libraries for this. +More is said about this below.

+

Option 3: Distribute static or dynamic libraries that people can use

+

This option is a combination of the first two options. It does put some burden on +the user, as they must create a main program that calls your routines in the +proper way, but they do not need to know much about the build system you used. +You will have to deal with the run-time libraries, though.

+

If you choose this option, besides the compiled libraries, you will also need to +supply the module intermediate files. These files are compiler-specific, but so are +the static libraries you build.

+
+

Distributing the tabulation program#

+

As shown above, the tabulation program can be built with the user-defined function +in a dynamic library. This enables you to:

+
    +
  • Ship the executable (with the appropriate run-time libraries)

  • +
  • Provide a skeleton version of the module, something like:

  • +
+
module user_functions
+    implicit none
+contains
+
+real function f( x )
+!DEC$ ATTRIBUTES DLLEXPORT :: f
+    real, intent(in) :: x
+
+    ! your function body goes here
+
+end function f
+
+end module user_functions
+
+
+
    +
  • Provide a basic build script with a command like:

  • +
+
gfortran -o functions.dll functions.f90 -shared
+
+
+

or:

+
ifort -exe:functions.dll functions.f90 -dll
+
+
+

As said, you cannot control that the user has done the right thing — any +DLL “functions.dll” with a function f would be accepted, but not necessarily +lead to a successful run.

+

An alternative set-up would be to change the main program into a subroutine +and have the function as an argument:

+
module tabulation
+    implicit none
+contains
+
+subroutine tabulate( f )
+    interface
+        real function f( x )
+            real, intent(in) :: x
+        end function f
+    end interface
+
+    ! your implementation goes here
+
+end subroutine tabulate
+
+end module tabulation
+
+
+

Then provide a skeleton main program:

+
program tabulate_f
+    use tabulation
+
+    call tabulate( func1 )
+
+contains
+
+real function func1( x )
+    real, intent(in) :: x
+
+    ! your function body goes here
+
+end function func1
+
+end program tabulate_f
+
+
+

The advantage is that the compiler can check the interface of the +function that is passed and that the user has more freedom in the use of the +functionality provided by your library.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/include_files/index.html b/learn/building_programs/include_files/index.html new file mode 100644 index 000000000000..b85508aa99ac --- /dev/null +++ b/learn/building_programs/include_files/index.html @@ -0,0 +1,831 @@ + + + + + + + + + Include files and modules — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Include files and modules#

+

Your program can be contained in various source files, all stored in the +same directory or organised in some convenient directory tree. The +details of the organisation depend on personal taste, arrangements made +by the group of developers you belong to, or simply the history of the +program. Whatever the directory structure is, you will encounter a +situation where the compiler needs assistance in order to compile a +particular source file:

+
    +
  • Fortran (and other languages) has the possibility to include an +external file. While this feature has become a bit less useful with the +advent of modules, it still has its uses. Quite often, such “include +files” are stored in a directory separated from the directories +containing the source files, because they are used in several locations. +Quite often the name of that directory is “include”.

  • +
  • As we have seen, compiling source code that defines one or more modules, leads to +the compiler generating so-called “module intermediate files” (with the extension “.mod”). +The compiler needs access to these files to be able to read the interfaces +and variables and what not, and based on this information, actually +compile the source code that uses the various modules.

  • +
+

Compilers support options like -I to indicate where these include +files and module intermediate files are to be found. Suppose we store +the two files of our tabulate program in the following directory +structure:

+
tabulate/
+    main/
+        tabulate.f90
+    sub/
+        functions.f90
+
+
+

Compiling the file “functions.f90” with the commands

+
$ cd sub
+$ gfortran -c functions.f90
+
+
+

leads to this structure:

+
tabulate/
+    main/
+        tabulate.f90
+    sub/
+        functions.f90
+        user_functions.mod
+        functions.o
+
+
+

To successfully compile and subsequently build the program we need to +tell the compiler where it can find the file “user_functions.mod”:

+
$ cd main
+$ gfortran -c tabulate.f90 -I ../sub
+$ gfortran -o tabulate tabulate.o ../sub/functions.o
+
+
+

The result:

+
tabulate/
+    main/
+        tabulate.f90
+        tabulate.o
+        tabulate (or tabulate.exe on Windows)
+    sub/
+        functions.f90
+        functions.o
+        user_functions.mod
+
+
+

Notes:

+
    +
  • The details differ per compiler. Sometimes the -I option should be +followed by a space and then the name of the directory, sometimes the +directory should come consecutively.

  • +
  • By default the module intermediate files (.mod) are put in the +same directory as the object files. When your program code is organised +in different subdirectories, they will get scattered over the directory +tree, complicating the compilation process. Luckily, +many compilers allow you to specify the output location for these +files. For gfortran this is -J, for instance: +-J../include (so that the .mod files could all appear in the +same directory)

  • +
  • For large programs, consisting of many source files, it is important to +think through what organisation to use.

  • +
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/index.html b/learn/building_programs/index.html new file mode 100644 index 000000000000..42d3c0de8c67 --- /dev/null +++ b/learn/building_programs/index.html @@ -0,0 +1,787 @@ + + + + + + + + + Building programs — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Building programs#

+

Languages like Fortran, C, C++ and Java, to name but a few, share +certain characteristics: you write code in your language of choice but +then you have to build an executable program from that source code. +Other languages are interpreted — the source code is analysed by a +special program and taken as direct instructions. Two very simple +examples of that type of language: Windows batch files and Linux shell +scripts.

+

In this tutorial we concentrate on the first type of languages, with +Fortran as the main example. One advantage of compiled languages is that +the build process that you need to build an executable program, is used +to transform the human-readable source code into an efficient program +that can be run on the computer.

+

Remark: this tutorial gives examples for the Windows and Linux operating +systems, however the workflow and general principles still apply to macOS.

+
+

Compiled languages#

+

Let us have a look at a simple example:

+
program hello
+    write(*,*) 'Hello!'
+end program hello
+
+
+

This is just about the simplest program you can write in Fortran and it +is certainly a variation on one of the most famous programs. Even though +it is simple to express in source code, a lot of things actually happen +when the executable that is built from this code runs:

+
    +
  • A process is started on the computer in such a way that it can write +to the console — the window (DOS-box, xterm, …) at which you type the +program’s name.

  • +
  • It writes the text “Hello!” to the console. To do so it must properly +interact with the console.

  • +
  • When done, it finishes, cleaning up all the resources (memory, +connection to the console etc.) it took.

  • +
+

Fortunately, as a programmer in a high-level language you do not need to +consider all these details. In fact, this is the sort of things that is +taken care of by the build process: the compiler and the linker.

+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/linking_pieces/index.html b/learn/building_programs/linking_pieces/index.html new file mode 100644 index 000000000000..9cd2afde40a8 --- /dev/null +++ b/learn/building_programs/linking_pieces/index.html @@ -0,0 +1,828 @@ + + + + + + + + + Linking the objects — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Linking the objects#

+

Almost all programs, except for the simplest, are built up from +different pieces. We are going to examine such a situation in +more detail.

+

Here is a general program for tabulating a function (source code in +“tabulate.f90”):

+
program tabulate
+    use user_functions
+
+    implicit none
+    real    :: x, xbegin, xend
+    integer :: i, steps
+
+    write(*,*) 'Please enter the range (begin, end) and the number of steps:'
+    read(*,*)  xbegin, xend, steps
+
+    do i = 0, steps
+        x = xbegin + i * (xend - xbegin) / steps
+        write(*,'(2f10.4)') x, f(x)
+    end do
+end program tabulate
+
+
+

Note the use statement — this will be where we define the function f.

+

We want to make the program general, so keep the +specific source code — the implementation of the function f — +separated from the general source code. There are several ways to +achieve this, but one is to put it in a different source file. We can +give the general program to a user and they provide a specific source code.

+

Assume for the sake of the example that the function is implemented in a +source file “functions.f90” as:

+
module user_functions
+    implicit none
+contains
+
+real function f( x )
+    real, intent(in) :: x
+    f = x - x**2 + sin(x)
+end function f
+
+end module user_functions
+
+
+

To build the program with this specific function, we need to compile two +source files and combine them via the link step into one executable +program. Because the program “tabulate” depends on the module +“function”, we need to compile the source file containing our module +first. A sequence of commands to do this is:

+
$ gfortran -c functions.f90
+$ gfortran tabulate.f90 functions.o
+
+
+

The first step compiles the module, resulting in an object file +“functions.o” and a module intermediate file, “user_functions.mod”. This module +file contains all the information the compiler needs to determine that +the function f is defined in this module and what its interface is. This +information is important: it enables the compiler to check that you call +the function in the right way. It might be that you made a mistake and +called the function with two arguments instead of one. If the compiler +does not know anything about the function’s interface, then it cannot +check anything.

+

The second step invokes the compiler in such a way that:

+
    +
  • it compiles the file “tabulate.f90” (using the module file);

  • +
  • it invokes the linker to combine the object files tabulate.o and functions.o into an +executable program — with the default name “a.out” or “a.exe” (if you +want a different name, use the option “-o”).

  • +
+

What you do not see in general is that the linker also adds a number of +extra files in this link step, the run-time libraries. These run-time +libraries contain all the “standard” stuff — low-level routines that do +the input and output to screen, the sin function and much more.

+

If you want to see the gory details, add the option “-v”. This instructs +the compiler to report all the steps that are in detail.

+

The end result, the executable program, contains the compiled source +code and various auxiliary routines that make it work. It also contains +references to so-called dynamic run-time libraries (in Windows: DLLs, in +Linux: shared objects or shared libraries). Without these run-time +libraries the program will not start.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/managing_libraries/index.html b/learn/building_programs/managing_libraries/index.html new file mode 100644 index 000000000000..c59a6d433ae6 --- /dev/null +++ b/learn/building_programs/managing_libraries/index.html @@ -0,0 +1,944 @@ + + + + + + + + + Managing libraries (static and dynamic libraries) — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Managing libraries (static and dynamic libraries)#

+

If you need to manage a program built of dozens of source files (and +that is not uncommon!), the command-line needed to specify all the +object files will be very long indeed. This soon becomes tedious or +even impossible to maintain. So a different solution is called for: +create your own libraries.

+

Libraries contain any number of object files in a compact form, so that +the command-line becomes far shorter:

+
$ gfortran -o tabulate tabulate.f90 functions.o supportlib.a
+
+
+

where “supportlib.a” is a collection of one, two or many object files, +all compiled and then put into a library. The extension “.a” is used by +Linux and Linux-like platforms. On Windows the extension “.lib” is used.

+

Creating your own libraries is not that complicated: +on Linux, you can achieve this using a utility like ar:

+
$ gfortran -c file1.f90 file2.f90
+$ gfortran -c file3.f90 ...
+$ ar r supportlib.a file1.o file2.o
+$ ar r supportlib.a file3.o ...
+
+
+

or on Windows using the lib utility:

+
c:\...> ifort -c file1.f90 file2.f90
+c:\...> ifort -c file3.f90 ...
+c:\...> lib /out:supportlib.lib file1.obj file2.obj
+c:\...> lib supportlib.lib file3.obj ...
+
+
+

Note:

+
    +
  • The command ar with the option r either creates the library (the +name appears after the option) or adds new object files to the library +(or replaces any existing ones).

  • +
  • The command lib will create a new library if you use specify the +option /out: with the name of the new library next to it. To add +object files to an existing library, leave out the /out: bit.

  • +
  • On platforms like Linux there is a particular convention to name +libraries. If you name your library like “libname.a” (note the “lib” +prefix), then you can refer to it as -lname in the link step.

  • +
  • Libraries are often sought in directories indicated by an option -L +or /LIBPATH. This saves you from having to specify the exact path for +every library.

  • +
+

Using libraries you can build very large programs without +having to resort to extremely long command lines.

+
+

Static versus dynamic libraries#

+

The above discussion is tacitly assuming that you are using the so-called +static libraries. Static libraries (or at least parts of their +contents) become an integral part of the executable program. The only +way to change the routines incorporated in the program is by rebuilding +the program with a new version of the library.

+

A flexible alternative is to use the so-called dynamic libraries. These +libraries remain outside the executable program and as a consequence +can be replaced without rebuilding the entire program. Compilers and +indeed the operating system itself rely heavily on such dynamic +libraries. You could consider dynamic libraries as a sort of executable +programs that need a bit of help to be run.

+

Building dynamic libraries works slightly differently from building +static libraries: you use the compiler/linker instead of a tool +like ar or lib.

+

On Linux:

+
$ gfortran -fpic -c file1.f90 file2.f90
+$ gfortran -fpic -c file3.f90 ...
+$ gfortran -shared -o supportlib.so file1.o file2.o file3.o ...
+
+
+

On Windows, with the Intel Fortran compiler:

+
$ ifort -c file1.f90 file2.f90
+$ ifort -c file3.f90 ...
+$ ifort -dll -exe:supportlib.dll file1.obj file2.obj file3.obj ...
+
+
+

The differences are that:

+
    +
  • You need to specify a compile option on Linux, for gfortran that is -fpic, +because the object code is slightly different.

  • +
  • You need to tell in the link step that you want a dynamic library (on +Linux: a shared object/library, hence the extension “.so”; on Windows: +a dynamic link library)

  • +
+

There is one more thing to be aware of: On Windows you must +explicitly specify that a procedure is to be exported, i.e. is visible +in the dynamic library. There are several ways — depending on the +compiler you use — to achieve this. One method is via a so-called +compiler directive:

+
subroutine myroutine( ... )
+!GCC$ ATTRIBUTES DLLEXPORT:: myroutine
+
+
+

Or, with the Intel Fortran compiler:

+
subroutine myroutine( ... )
+!DEC$ ATTRIBUTES DLLEXPORT:: myroutine
+
+
+

Besides a dynamic library (DLL), a so-called import library may be +generated.

+

Because the details differ per compiler, here are two examples: +gfortran on Cygwin and Intel Fortran on Windows. In both cases +we look at the tabulate program in the file “tabulate.f90”.

+
+
+

GNU/Linux and gfortran#

+

The tabulate program requires a user-defined routine f. If we +let it reside in a dynamic library, say “functions.dll”, we can simply +replace the implementation of the function by putting another dynamic +library in the directory. No need to rebuild the program as such.

+

On Cygwin it is not necessary to explicitly export a procedure — all +publically visible routines are exported when you build a dynamic library. +Also, no import library is generated.

+

Since our dynamic library can be built from a single source file, we +can take a shortcut:

+
$ gfortran -shared -o functions.dll functions.f90
+
+
+

This produces the files “functions.dll” and “user_functions.mod”. The +utility nm tells us the exact name of the function f:

+
$ nm functions.dll
+...
+000000054f9d7000 B __dynamically_loaded
+                 U __end__
+0000000000000200 A __file_alignment__
+000000054f9d1030 T __function_MOD_f
+000000054f9d1020 T __gcc_deregister_frame
+000000054f9d1000 T __gcc_register_frame
+...
+
+
+

It has received a prefix __function_MOD_ to distinguish it from any +other routine “f” that might be defined in another module.

+

The next step is to build the program:

+
$ gfortran -o tabulate tabulate.f90 functions.dll
+
+
+

The DLL and the .mod file are used to build the executable program +with checks on the function’s interface, the right name and the reference +to “a” DLL, called “functions.dll”.

+

You can replace the shared library “functions.dll” by another one, implementing +a different function “f”. Of course, you need to be careful to use the correct +interface for this function. The compiler/linker are not invoked anymore, so they +can do no checking.

+
+
+

Windows and Intel Fortran#

+

The setup is the same as with Linux, but on Windows it is necessary +to explicitly export the routines. And an import library is generated — +this is the library that should be used in the link step.

+

The source file must contain the compiler directive, otherwise the function f +is not exported:

+
real function f( x )
+!DEC$ ATTRIBUTES DLLEXPORT :: f
+
+
+

Again we take a shortcut:

+
$ ifort -exe:functions.dll functions.f90 -dll
+
+
+

This produces the files “functions.dll”, “user_functions.mod” as well as “functions.lib” (and two +other files of no importance here). The “dependency walker” program tells us +that the exact name of the function “f” is FUNCTION_mp_F. It is also exported, so that +it can be found by the linker in the next step:

+
$ ifort tabulate.f90 functions.lib
+
+
+

Note that we need to specify the name of the export library, not the DLL!

+

(Note also: the Intel Fortran compiler uses the name of the first source file as the +name for the executable — here we do without the -exe option.)

+

Just as under Cygwin, the DLL and the .mod file are used to build the executable program +with checks on the function’s interface, the right name and the reference +to “a” DLL, called “functions.dll”.

+

You can replace the shared library “functions.dll” by another one, but the same +caution is required: while the implementation can be quite different, the +function’s interface must be the same.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/project_make/index.html b/learn/building_programs/project_make/index.html new file mode 100644 index 000000000000..4a4fd5aa8a80 --- /dev/null +++ b/learn/building_programs/project_make/index.html @@ -0,0 +1,1208 @@ + + + + + + + + + An introduction to make — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

An introduction to make#

+

We briefly discussed the basics of make. This chapter gives ideas +and strategies to scale make for larger projects.

+

Before going into detail with make, consider a few points:

+
    +
  1. make is a Unix tool and might give you a hard time when porting to non-Unix +platforms. That said, there are also different flavors of make available, +not all might support the features you want to use.

  2. +
  3. While make gives you full control over the build process, it also +means you are responsible for the entire build process, and you have to specify the rules for every detail of your project. +You might find yourself spending a significant amount of time writing and +maintaining your Makefile instead of developing your source code.

  4. +
  5. You can work with your Makefile, but think about other developers +on your project who may not be familiar with make. How much time do you expect them to spend learning your +Makefile and would they be able to debug or add features?

  6. +
  7. Pure make will not scale. You will soon add auxiliary programs +to dynamically or statically generate your Makefile. Those introduce +dependencies and possible sources of errors. The effort needed to test and document those +tools should not be underestimated.

  8. +
+

If you think make is suitable for your needs, than you can start writing +your Makefile. For this course we will use real world examples from the +package index, which (at the time of writing) use build systems other +than make. This guide should present a general recommended style to write +make, but also serve as demonstration of useful and interesting features.

+
+

Tip

+

Even if you find make unsuitable to build your project, it is the tool to automate workflows defined by files. Maybe you can leverage its power in a different context.

+
+
+

Getting started#

+

For this part we will work with + the Fortran CSV module (v1.2.0). +Our goal is to write a Makefile to compile this project to a static library. +Start by cloning the repository

+
git clone https://github.com/jacobwilliams/fortran-csv-module -b 1.2.0
+cd fortran-csv-module
+
+
+
+

Tip

+

For this part we will work with the code from tag 1.2.0, to make it as reproducible as possible. Feel free to use the latest version or another project instead.

+
+

This project uses FoBiS as build system, and you can check the +build.sh for options used with FoBiS. We are about to write a Makefile +for this project. First, we check the directory structure and the source files

+
.
+├── build.sh
+├── files
+│   ├── test_2_columns.csv
+│   └── test.csv
+├── fortran-csv-module.md
+├── LICENSE
+├── README.md
+└── src
+    ├── csv_kinds.f90
+    ├── csv_module.F90
+    ├── csv_parameters.f90
+    ├── csv_utilities.f90
+    └── tests
+        ├── csv_read_test.f90
+        ├── csv_test.f90
+        └── csv_write_test.f90
+
+
+

We find seven different Fortran source files; the four in src should +be compiled and added to a static library while the three in src/tests +contain individual programs that depend on this static library.

+

Start by creating a simple Makefile:

+
# Disable the default rules
+MAKEFLAGS += --no-builtin-rules --no-builtin-variables
+
+# Project name
+NAME := csv
+
+# Configuration settings
+FC := gfortran
+AR := ar rcs
+LD := $(FC)
+RM := rm -f
+
+# List of all source files
+SRCS := src/csv_kinds.f90 \
+        src/csv_module.F90 \
+        src/csv_parameters.f90 \
+        src/csv_utilities.f90
+TEST_SRCS := src/tests/csv_read_test.f90 \
+             src/tests/csv_test.f90 \
+             src/tests/csv_write_test.f90
+
+# Create lists of the build artefacts in this project
+OBJS := $(addsuffix .o, $(SRCS))
+TEST_OBJS := $(addsuffix .o, $(TEST_SRCS))
+LIB := $(patsubst %, lib%.a, $(NAME))
+TEST_EXE := $(patsubst %.f90, %.exe, $(TEST_SRCS))
+
+# Declare all public targets
+.PHONY: all clean
+all: $(LIB) $(TEST_EXE)
+
+# Create the static library from the object files
+$(LIB): $(OBJS)
+	$(AR) $@ $^
+
+# Link the test executables
+$(TEST_EXE): %.exe: %.f90.o $(LIB)
+	$(LD) -o $@ $^
+
+# Create object files from Fortran source
+$(OBJS) $(TEST_OBJS): %.o: %
+	$(FC) -c -o $@ $<
+
+# Define all module interdependencies
+csv_kinds.mod := src/csv_kinds.f90.o
+csv_module.mod := src/csv_module.F90.o
+csv_parameters.mod := src/csv_parameters.f90.o
+csv_utilities.mod := src/csv_utilities.f90.o
+src/csv_module.F90.o: $(csv_utilities.mod)
+src/csv_module.F90.o: $(csv_kinds.mod)
+src/csv_module.F90.o: $(csv_parameters.mod)
+src/csv_parameters.f90.o: $(csv_kinds.mod)
+src/csv_utilities.f90.o: $(csv_kinds.mod)
+src/csv_utilities.f90.o: $(csv_parameters.mod)
+src/tests/csv_read_test.f90.o: $(csv_module.mod)
+src/tests/csv_test.f90.o: $(csv_module.mod)
+src/tests/csv_write_test.f90.o: $(csv_module.mod)
+
+# Cleanup, filter to avoid removing source code by accident
+clean:
+	$(RM) $(filter %.o, $(OBJS) $(TEST_OBJS)) $(filter %.exe, $(TEST_EXE)) $(LIB) $(wildcard *.mod)
+
+
+

Invoking make should build the static library and the test executables as +expected:

+
gfortran -c -o src/csv_kinds.f90.o src/csv_kinds.f90
+gfortran -c -o src/csv_parameters.f90.o src/csv_parameters.f90
+gfortran -c -o src/csv_utilities.f90.o src/csv_utilities.f90
+gfortran -c -o src/csv_module.F90.o src/csv_module.F90
+ar rcs libcsv.a src/csv_kinds.f90.o src/csv_module.F90.o src/csv_parameters.f90.o src/csv_utilities.f90.o
+gfortran -c -o src/tests/csv_read_test.f90.o src/tests/csv_read_test.f90
+gfortran -o src/tests/csv_read_test.exe src/tests/csv_read_test.f90.o libcsv.a
+gfortran -c -o src/tests/csv_test.f90.o src/tests/csv_test.f90
+gfortran -o src/tests/csv_test.exe src/tests/csv_test.f90.o libcsv.a
+gfortran -c -o src/tests/csv_write_test.f90.o src/tests/csv_write_test.f90
+gfortran -o src/tests/csv_write_test.exe src/tests/csv_write_test.f90.o libcsv.a
+
+
+

There are a few things to note there, a make build usually interlaces the +build artifacts and the source code, unless you put extra effort into implementing +a build directory. +Also, right now the the source files and dependencies are specified explicitly, +which results in several additional lines even for such a simple project.

+
+
+

Automatically generated dependencies#

+

The main drawback of make for Fortran is the missing capability to +determine module dependencies. This is usually solved by either adding those +by hand or automatically scanning the source code with an external tool. +Some compilers (like the Intel Fortran compiler) also offer to generate dependencies in make format.

+

Before diving into the dependency generation, we will outline the concept of +a robust take on the dependency problem. +First, we want an approach that can process all source files independently, +while each source file provides (module) or requires (use) modules. +When generating the dependencies only the name of the source file and the +module files are known, and no information on the object file names should be +required.

+

If you check the dependency section above you will note that all dependencies are +defined between object files rather than source files. To change this, we can +generate a map from the source files their respective object files:

+
# Define a map from each file name to its object file
+obj = $(src).o
+$(foreach src, $(SRCS) $(TEST_SRCS), $(eval $(src) := $(obj)))
+
+
+

Note the declaration of obj as recursively expanded variable, we effectively +use this mechanism to define a function in make. The foreach function +allows us to loop over all source files, while the eval function allows us +to generate make statements and evaluate them for this Makefile.

+

We adjust the dependencies accordingly as we can now define the name of the +object files through the source file names:

+
# Define all module interdependencies
+csv_kinds.mod := $(src/csv_kinds.f90)
+csv_module.mod := $(src/csv_module.F90)
+csv_parameters.mod := $(src/csv_parameters.f90)
+csv_utilities.mod := $(src/csv_utilities.f90)
+$(src/csv_module.F90): $(csv_utilities.mod)
+$(src/csv_module.F90): $(csv_kinds.mod)
+$(src/csv_module.F90): $(csv_parameters.mod)
+$(src/csv_parameters.f90): $(csv_kinds.mod)
+$(src/csv_utilities.f90): $(csv_kinds.mod)
+$(src/csv_utilities.f90): $(csv_parameters.mod)
+$(src/tests/csv_read_test.f90): $(csv_module.mod)
+$(src/tests/csv_test.f90): $(csv_module.mod)
+$(src/tests/csv_write_test.f90): $(csv_module.mod)
+
+
+

The same strategy of creating a map is already used for the module files, now +it is just expanded to the object files as well.

+

To generate the respective dependency map automatically we will use an +awk script here

+
#!/usr/bin/awk -f
+
+BEGIN {
+    # Fortran is case insensitive, disable case sensitivity for matching
+    IGNORECASE = 1
+}
+
+# Match a module statement
+# - the first argument ($1) should be the whole word module
+# - the second argument ($2) should be a valid module name
+$1 ~ /^module$/ &&
+$2 ~ /^[a-zA-Z][a-zA-Z0-9_]*$/ {
+    # count module names per file to avoid having modules twice in our list
+    if (modc[FILENAME,$2]++ == 0) {
+        # add to the module list, the generated module name is expected
+        # to be lowercase, the FILENAME is the current source file
+        mod[++im] = sprintf("%s.mod = $(%s)", tolower($2), FILENAME)
+    }
+}
+
+# Match a use statement
+# - the first argument ($1) should be the whole word use
+# - the second argument ($2) should be a valid module name
+$1 ~ /^use$/ &&
+$2 ~ /^[a-zA-Z][a-zA-Z0-9_]*,?$/ {
+    # Remove a trailing comma from an optional only statement
+    gsub(/,/, "", $2)
+    # count used module names per file to avoid using modules twice in our list
+    if (usec[FILENAME,$2]++ == 0) {
+        # add to the used modules, the generated module name is expected
+        # to be lowercase, the FILENAME is the current source file
+        use[++iu] = sprintf("$(%s) += $(%s.mod)", FILENAME, tolower($2))
+    }
+}
+
+# Match an include statement
+# - the first argument ($1) should be the whole word include
+# - the second argument ($2) can be everything, as long as delimited by quotes
+$1 ~ /^(#:?)?include$/ &&
+$2 ~ /^["'].+["']$/ {
+    # Remove quotes from the included file name
+    gsub(/'|"/, "", $2)
+    # count included files per file to avoid having duplicates in our list
+    if (incc[FILENAME,$2]++ == 0) {
+        # Add the included file to our list, this might be case-sensitive
+        inc[++ii] = sprintf("$(%s) += %s", FILENAME, $2)
+    }
+}
+
+# Finally, produce the output for make, loop over all modules, use statements
+# and include statements, empty lists are ignored in awk
+END {
+    for (i in mod) print mod[i]
+    for (i in use) print use[i]
+    for (i in inc) print inc[i]
+}
+
+
+

This script makes a few assumptions about the source code it parses, so it will +not work with all Fortran code (namely submodules are not supported), but for +this example it will suffice.

+
+

Tip

+

Using awk

+

The above script uses the awk language, which is designed for the purpose +of text stream processing and uses a C-like syntax. In awk you can define +groups which are evaluated on certain events, e.g. when a line matches a +specific pattern, usually expressed by a + regular expression.

+

This awk script defines five groups, two of them use the special pattern +BEGIN and END which are run before the script starts and after the script +finishes, respectively. +Before the script starts we make the script case-insensitive since we are dealing +with Fortran source code here. +We also use the special variable FILENAME to determine which file we are +currently parsing and to allow processing multiple files at once.

+

With the three patterns defined we are looking for module, use and +include statements as the first space delimited entry. With the used +pattern not all valid Fortran code will be parsed correctly. +A failing example would be:

+
use::my_module,only:proc
+
+
+

To make this parsable by the awk script we can add another group directly +after the BEGIN group, modifying the stream while processing it with

+
{
+   gsub(/,|:/, " ")
+}
+
+
+

In theory you would need a full Fortran parser to deal with continuation lines +and other difficulties. This might be possible to implement in awk but +would require a huge script in the end.

+

Also, keep in mind that generating the dependencies should be fast, an expensive +parser can produce a significant overhead when generating dependencies for a large +code base. Making reasonable assumptions can simplify and speed up this step, but +also introduces an error source in your build tools.

+
+

Make the script executable (chmod +x gen-deps.awk) and test it with +./gen-deps.awk $(find src -name '*.[fF]90'). You should see output like this:

+
csv_utilities.mod = $(src/csv_utilities.f90)
+csv_kinds.mod = $(src/csv_kinds.f90)
+csv_parameters.mod = $(src/csv_parameters.f90)
+csv_module.mod = $(src/csv_module.F90)
+$(src/csv_utilities.f90) += $(csv_kinds.mod)
+$(src/csv_utilities.f90) += $(csv_parameters.mod)
+$(src/csv_kinds.f90) += $(iso_fortran_env.mod)
+$(src/tests/csv_read_test.f90) += $(csv_module.mod)
+$(src/tests/csv_read_test.f90) += $(iso_fortran_env.mod)
+$(src/tests/csv_write_test.f90) += $(csv_module.mod)
+$(src/tests/csv_write_test.f90) += $(iso_fortran_env.mod)
+$(src/tests/csv_test.f90) += $(csv_module.mod)
+$(src/tests/csv_test.f90) += $(iso_fortran_env.mod)
+$(src/csv_parameters.f90) += $(csv_kinds.mod)
+$(src/csv_module.F90) += $(csv_utilities.mod)
+$(src/csv_module.F90) += $(csv_kinds.mod)
+$(src/csv_module.F90) += $(csv_parameters.mod)
+$(src/csv_module.F90) += $(iso_fortran_env.mod)
+
+
+

Note that the scripts output will use recursively expanded variables and not +define any dependencies yet, because out-of-order declaration of variables +might be necessary and we do not want to create any target by accident. +You can verify that the same information as in the above handwritten snippet is +present. The only exception is the additional dependency on the +iso_fortran_env.mod, since it is an undefined variable it will just expand +to an empty string and not introduce any further dependencies.

+

Now, you can finally include this piece in your Makefile to automate the +dependency generation:

+
# Disable the default rules
+MAKEFLAGS += --no-builtin-rules --no-builtin-variables
+
+# Project name
+NAME := csv
+
+# Configuration settings
+FC := gfortran
+AR := ar rcs
+LD := $(FC)
+RM := rm -f
+GD := ./gen-deps.awk
+
+# List of all source files
+SRCS := src/csv_kinds.f90 \
+        src/csv_module.F90 \
+        src/csv_parameters.f90 \
+        src/csv_utilities.f90
+TEST_SRCS := src/tests/csv_read_test.f90 \
+             src/tests/csv_test.f90 \
+             src/tests/csv_write_test.f90
+
+# Add source and tests directories to search paths
+vpath % .: src
+vpath % .: src/tests
+
+# Define a map from each file name to its object file
+obj = $(src).o
+$(foreach src, $(SRCS) $(TEST_SRCS), $(eval $(src) := $(obj)))
+
+# Create lists of the build artefacts in this project
+OBJS := $(addsuffix .o, $(SRCS))
+DEPS := $(addsuffix .d, $(SRCS))
+TEST_OBJS := $(addsuffix .o, $(TEST_SRCS))
+TEST_DEPS := $(addsuffix .d, $(TEST_SRCS))
+LIB := $(patsubst %, lib%.a, $(NAME))
+TEST_EXE := $(patsubst %.f90, %.exe, $(TEST_SRCS))
+
+# Declare all public targets
+.PHONY: all clean
+all: $(LIB) $(TEST_EXE)
+
+# Create the static library from the object files
+$(LIB): $(OBJS)
+	$(AR) $@ $^
+
+# Link the test executables
+$(TEST_EXE): %.exe: %.f90.o $(LIB)
+	$(LD) -o $@ $^
+
+# Create object files from Fortran source
+$(OBJS) $(TEST_OBJS): %.o: % | %.d
+	$(FC) -c -o $@ $<
+
+# Process the Fortran source for module dependencies
+$(DEPS) $(TEST_DEPS): %.d: %
+	$(GD) $< > $@
+
+# Define all module interdependencies
+include $(DEPS) $(TEST_DEPS)
+$(foreach dep, $(OBJS) $(TEST_OBJS), $(eval $(dep): $($(dep))))
+
+# Cleanup, filter to avoid removing source code by accident
+clean:
+	$(RM) $(filter %.o, $(OBJS) $(TEST_OBJS)) $(filter %.d, $(DEPS) $(TEST_DEPS)) $(filter %.exe, $(TEST_EXE)) $(LIB) $(wildcard *.mod)
+
+
+

Here additional dependency files are generated for each source file individually +and than included into the main Makefile. +Also, the dependency files are added as dependency to the object files to ensure +they are generated before the object is compiled. The pipe character in +the dependencies defines an order of the rules without a timestamp dependency, +because it is not necessary to recompile an object file in case dependencies are +regenerated and potentially unchanged.

+

Again, we make use of the eval function to generate the dependencies in a +foreach loop over all object files. Note that we created a map between +the object files in the dependency files, expanding dep once yields the +object file name, expanding it again yields the object files it depends on.

+

Building your project with make should give an output similar to

+
./gen-deps.awk src/csv_utilities.f90 > src/csv_utilities.f90.d
+./gen-deps.awk src/csv_parameters.f90 > src/csv_parameters.f90.d
+./gen-deps.awk src/csv_module.F90 > src/csv_module.F90.d
+./gen-deps.awk src/csv_kinds.f90 > src/csv_kinds.f90.d
+gfortran -c -o src/csv_kinds.f90.o src/csv_kinds.f90
+gfortran -c -o src/csv_parameters.f90.o src/csv_parameters.f90
+gfortran -c -o src/csv_utilities.f90.o src/csv_utilities.f90
+gfortran -c -o src/csv_module.F90.o src/csv_module.F90
+ar rcs libcsv.a src/csv_kinds.f90.o src/csv_module.F90.o src/csv_parameters.f90.o src/csv_utilities.f90.o
+./gen-deps.awk src/tests/csv_read_test.f90 > src/tests/csv_read_test.f90.d
+gfortran -c -o src/tests/csv_read_test.f90.o src/tests/csv_read_test.f90
+gfortran -o src/tests/csv_read_test.exe src/tests/csv_read_test.f90.o libcsv.a
+./gen-deps.awk src/tests/csv_test.f90 > src/tests/csv_test.f90.d
+gfortran -c -o src/tests/csv_test.f90.o src/tests/csv_test.f90
+gfortran -o src/tests/csv_test.exe src/tests/csv_test.f90.o libcsv.a
+./gen-deps.awk src/tests/csv_write_test.f90 > src/tests/csv_write_test.f90.d
+gfortran -c -o src/tests/csv_write_test.f90.o src/tests/csv_write_test.f90
+gfortran -o src/tests/csv_write_test.exe src/tests/csv_write_test.f90.o libcsv.a
+
+
+

Once the dependency files are generated, make will only update them if the +source changes and not require to rebuild them again for every invocation.

+
+

Tip

+

With correct dependencies you can leverage parallel execution of your Makefile, just use the -j flag to create multiple make processes.

+
+

Since dependencies can now be generated automatically, there is no need to specify +the source files explicitly, the wildcard function can be used to determine +them dynamically:

+
# List of all source files
+SRCS := $(wildcard src/*.f90) \
+        $(wildcard src/*.F90)
+TEST_SRCS := $(wildcard src/tests/*.f90)
+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/building_programs/runtime_libraries/index.html b/learn/building_programs/runtime_libraries/index.html new file mode 100644 index 000000000000..4af114b2414b --- /dev/null +++ b/learn/building_programs/runtime_libraries/index.html @@ -0,0 +1,802 @@ + + + + + + + + + Run-time libraries — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Run-time libraries#

+

To illustrate that even a simple program depends on external run-time +libraries, here is the output from the ldd utility that reports such +dependencies:

+
$ ldd tabulate.exe
+        ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7ff88f2b0000)
+        KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7ff88e450000)
+        KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7ff88b9e0000)
+        cygwin1.dll => /usr/bin/cygwin1.dll (0x180040000)
+        cyggfortran-5.dll => /usr/bin/cyggfortran-5.dll (0x3efd20000)
+        cygquadmath-0.dll => /usr/bin/cygquadmath-0.dll (0x3ee0b0000)
+        cyggcc_s-seh-1.dll => /usr/bin/cyggcc_s-seh-1.dll (0x3f7000000)
+
+
+

Other compilers or other versions of the same compiler will probably +require different dynamic libraries. As long as you run the program on +the same computer — or, more accurately, within the same environment — +there should be no problem. However, when such a library cannot be +found, you will get (hopefully) an error message and the program stops +immediately.

+

Therefore it is good to know what libraries are required. On Linux and +Linux-like environments, the ldd utility is a great help. On Windows, +you may want to use the dependency walker (the latest version, which +works very nicely with Windows 10, is found here: https://github.com/lucasg/Dependencies)

+

Another thing you should know is where the program tries to find these +libraries. That is a vast subject in its own right and full of +complications and history. Here we merely scratch the surface:

+

On Linux:

+
    +
  • The environment variable LD_LIBRARY_PATH is used. It consists of a +list of directories to be searched, each directory separated via colons +(:) from the others. For instance: /usr/lib:/usr/local/lib — typical +system directories.

  • +
  • At the link step you can also use an option to set RPATH, a list +of directories that is put into the executable file itself.

  • +
  • Then there are several system directories that are searched.

  • +
+

On Windows:

+
    +
  • The directory containing the executable program may also contain +dynamic libraries.

  • +
  • The environment variable “PATH” is used. Again a list of directories +to be searched, but now the separating character is the semicolon (;).

  • +
  • A set of system directories is searched.

  • +
+

Unfortunately, the details can change from one version of the operating +system to the next. The above is merely an indication — use tools like +“ldd” or “dependency walker” to find out what libraries are loaded and +where they are found.

+

If you want to share your program with colleagues or clients or simply +users all over the world, you will have to take care that, besides the +program, you also distribute the libraries it depends on. For more +information: see below.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/index.html b/learn/index.html index a336dc0a4431..cdc96a68f0bf 100644 --- a/learn/index.html +++ b/learn/index.html @@ -1,13 +1,755 @@ - - - - - + + + + + + + + Learn — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Learn#

+
+

Learn Fortran

+
+
+

Learning resources for beginners and experts alike

+
+
+

Getting Started

+
+
+
+
+
+
+
+
+
+
+ New to Fortran
+

Try the quickstart Fortran tutorial, to get an overview of the language syntax and capabilities.

+
+
+

Quickstart tutorial

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Looking for help
+

Ask a question in the Fortran-lang discourse - a forum for friendly discussion of all things Fortran.

+
+
+

Fortran-lang Discourse

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Play with Fortran
+

Get a taste of Fortran in an interactive playground in the browser.

+
+
+

Fortran Playground

+
+
+
+
+
+
+
+
+
+
+
+

Mini-book Tutorials

+
+
+

Getting started

+
+
+
+
+
+
+ +

An introduction to the Fortran syntax and its capabilities

+
+
+
+
+
+
+ +

How to use the compiler to build an executable program

+
+
+
+
+
+
+ +

How to install a Fortran compiler and set up a development environment in Windows, Linux and macOS.

+
+
+
+
+
+
+ +

This tutorial collects a modern canonical way of doing things in Fortran.

+
+
+
+
+
+
+

Fortran Documentation

+
+
+
+
+
+
+ +

man-pages for the Fortran Intrinsics

+
+
+
+
+
+
+

Other Resources

+
+
+

On the web

+
+ +
+

Online Courses

+
+ +
+

In print

+
+ +
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/array/index.html b/learn/intrinsics/array/index.html new file mode 100644 index 000000000000..3670a70ddfbe --- /dev/null +++ b/learn/intrinsics/array/index.html @@ -0,0 +1,6484 @@ + + + + + + + + + Properties and attributes of arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Properties and attributes of arrays#

+
+

merge#

+
+

Name#

+

merge(3) - [ARRAY:CONSTRUCTION] Merge variables

+
+
+

Synopsis#

+
    result = merge(tsource, fsource, mask)
+
+
+
     elemental type(TYPE(kind=KIND)) function merge(tsource,fsource,mask)
+
+      type(TYPE(kind=KIND)),intent(in) :: tsource
+      type(TYPE(kind=KIND)),intent(in) :: fsource
+      logical(kind=**),intent(in)   :: mask
+      mask** : Shall be of type logical.
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • tsource May be of any type, including user-defined.

  • +
  • fsource Shall be of the same type and type parameters as tsource.

  • +
  • mask shall be of type logical.

  • +
  • The result will by of the same type and type parameters as tsource.

  • +
+
+
+

Description#

+

The elemental function merge(3) selects values from two arrays or +scalars according to a logical mask. The result is equal to an element +of tsource where the corresponding element of mask is .true., or an +element of fsource when it is .false. .

+

Multi-dimensional arrays are supported.

+

Note that argument expressions to merge(3) are not required to be +short-circuited so (as an example) if the array x contains zero values +in the statement below the standard does not prevent floating point +divide by zero being generated; as 1.0/x may be evaluated for all values +of x before the mask is used to select which value to retain:

+
      y = merge( 1.0/x, 0.0, x /= 0.0 )
+
+
+

Note the compiler is also free to short-circuit or to generate an +infinity so this may work in many programming environments but is not +recommended.

+

For cases like this one may instead use masked assignment via the where +construct:

+
      where(x .ne. 0.0)
+         y = 1.0/x
+      elsewhere
+         y = 0.0
+      endwhere
+
+
+

instead of the more obscure

+
      merge(1.0/merge(x,1.0,x /= 0.0), 0.0, x /= 0.0)
+
+
+
+
+

Options#

+
    +
  • +
    tsource

    May be of any type, including user-defined.

    +
    +
    +
  • +
  • +
    fsource

    Shall be of the same type and type parameters as tsource.

    +
    +
    +
  • +
  • +
    mask

    Shall be of type logical.

    +
    +
    +
  • +
+

Note that (currently) character values must be of the same length.

+
+
+

Result#

+

The result is built from an element of tsource if mask is +.true. and from fsource otherwise.

+

Because tsource and fsource are required to have the same type +and type parameters (for both the declared and dynamic types), the +result is polymorphic if and only if both tsource and fsource +are polymorphic.

+
+
+

Examples#

+

Sample program:

+
program demo_merge
+implicit none
+integer :: tvals(2,3), fvals(2,3), answer(2,3)
+logical :: mask(2,3)
+integer :: i
+integer :: k
+logical :: chooseleft
+
+   ! Works with scalars
+   k=5
+   write(*,*)merge (1.0, 0.0, k > 0)
+   k=-2
+   write(*,*)merge (1.0, 0.0, k > 0)
+
+   ! set up some simple arrays that all conform to the
+   ! same shape
+   tvals(1,:)=[  10, -60,  50 ]
+   tvals(2,:)=[ -20,  40, -60 ]
+
+   fvals(1,:)=[ 0, 3, 2 ]
+   fvals(2,:)=[ 7, 4, 8 ]
+
+   mask(1,:)=[ .true.,  .false., .true. ]
+   mask(2,:)=[ .false., .false., .true. ]
+
+   ! lets use the mask of specific values
+   write(*,*)'mask of logicals'
+   answer=merge( tvals, fvals, mask )
+   call printme()
+
+   ! more typically the mask is an expression
+   write(*, *)'highest values'
+   answer=merge( tvals, fvals, tvals > fvals )
+   call printme()
+
+   write(*, *)'lowest values'
+   answer=merge( tvals, fvals, tvals < fvals )
+   call printme()
+
+   write(*, *)'zero out negative values'
+   answer=merge( tvals, 0, tvals < 0)
+   call printme()
+
+   write(*, *)'binary choice'
+   chooseleft=.false.
+   write(*, '(3i4)')merge([1,2,3],[10,20,30],chooseleft)
+   chooseleft=.true.
+   write(*, '(3i4)')merge([1,2,3],[10,20,30],chooseleft)
+
+contains
+
+subroutine printme()
+      write(*, '(3i4)')(answer(i, :), i=1, size(answer, dim=1))
+end subroutine printme
+
+end program demo_merge
+
+
+

Expected Results:

+
 >     mask of logicals
+ >      10   3  50
+ >       7   4 -60
+ >     highest values
+ >      10   3  50
+ >       7  40   8
+ >     lowest values
+ >       0 -60   2
+ >     -20   4 -60
+ >     zero out negative values
+ >       0 -60   0
+ >     -20   0 -60
+ >     binary choice
+ >      10  20  30
+ >       1   2   3
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • pack(3) packs an array into an array of rank one

  • +
  • spread(3) is used to add a dimension and replicate data

  • +
  • unpack(3) scatters the elements of a vector

  • +
  • transpose(3) - Transpose an array of rank two

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

pack#

+
+

Name#

+

pack(3) - [ARRAY:CONSTRUCTION] Pack an array into an array of rank one

+
+
+

Synopsis#

+
    result = pack( array, mask [,vector] )
+
+
+
     TYPE(kind=KIND) function pack(array,mask,vector)
+
+      TYPE(kind=KIND),option(in) :: array(..)
+      logical  :: mask(..)
+      TYPE(kind=KIND),option(in),optional :: vector(*)
+
+
+
+
+

Characteristics#

+
    +
  • array is an array of any type

  • +
  • mask a logical scalar as well as an array conformable with array.

  • +
  • vector is of the same kind and type as array and of rank one

  • +
  • the returned value is of the same kind and type as array

  • +
+
+
+

Description#

+

pack(3) stores the elements of array in an array of rank one.

+

The beginning of the resulting array is made up of elements whose +mask equals .true.. Afterwards, remaining positions are filled with elements +taken from vector

+
+
+

Options#

+
    +
  • +
    array

    The data from this array is used to fill the resulting vector

    +
    +
    +
  • +
  • +
    mask

    the logical mask must be the same size as array or, +alternatively, it may be a logical scalar.

    +
    +
    +
  • +
  • +
    vector

    an array of the same type as array and of rank +one. If present, the number of elements in vector shall be equal to +or greater than the number of true elements in mask. If mask is +scalar, the number of elements in vector shall be equal to or +greater than the number of elements in array.

    +
    +
    +
  • +
+

vector shall have at least as many elements as there are in array.

+
+
+

Result#

+

The result is an array of rank one and the same type as that of array. +If vector is present, the result size is that of vector, the number of +.true. values in mask otherwise.

+

If mask is scalar with the value .true., in which case the result +size is the size of array.

+
+
+

Examples#

+

Sample program:

+
program demo_pack
+implicit none
+integer, allocatable :: m(:)
+character(len=10) :: c(4)
+
+ ! gathering nonzero elements from an array:
+   m = [ 1, 0, 0, 0, 5, 0 ]
+   write(*, fmt="(*(i0, ' '))") pack(m, m /= 0)
+
+ ! Gathering nonzero elements from an array and appending elements
+ ! from VECTOR till the size of the mask array (or array size if the
+ ! mask is scalar):
+   m = [ 1, 0, 0, 2 ]
+   write(*, fmt="(*(i0, ' '))") pack(m, m /= 0, [ 0, 0, 3, 4 ])
+   write(*, fmt="(*(i0, ' '))") pack(m, m /= 0 )
+
+ ! select strings whose second character is "a"
+   c = [ character(len=10) :: 'ape', 'bat', 'cat', 'dog']
+   write(*, fmt="(*(g0, ' '))") pack(c, c(:)(2:2) == 'a' )
+
+end program demo_pack
+
+
+

Results:

+
 > 1 5
+ > 1 2 3 4
+ > 1 2
+ > bat        cat
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

merge(3), +spread(3), +unpack(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

spread#

+
+

Name#

+

spread(3) - [ARRAY:CONSTRUCTION] Add a dimension and replicate data

+
+
+

Synopsis#

+
    result = spread(source, dim, ncopies)
+
+
+
     TYPE(kind=KIND) function spread(source, dim, ncopies)
+
+      TYPE(kind=KIND)             :: source(..)
+      integer(kind=**),intent(in) :: dim
+      integer(kind=**),intent(in) :: ncopies
+
+
+
+
+

Characteristics#

+
    +
  • source is a scalar or array of any type.

  • +
  • dim is an integer scalar

  • +
  • ncopies is an integer scalar

  • +
+
+
+

Description#

+

spread(3) replicates a source array along a specified dimension +dim. The copy is repeated ncopies times.

+

So to add additional rows to a matrix dim=1 would be used, but to +add additional rows dim=2 would be used, for example.

+

If source is scalar, the size of the resulting vector is ncopies +and each element of the result has a value equal to source.

+
+
+

Options#

+
    +
  • +
    source

    a scalar or array of any type and a rank less than fifteen.

    +
    +
    +
  • +
  • +
    dim

    The additional dimension value in the range from +1 to n+1, where n equals the rank of source.

    +
    +
    +
  • +
  • +
    ncopies

    the number of copies of the original data to generate

    +
    +
    +
  • +
+
+
+

Result#

+

The result is an array of the same type as source and has rank n+1 +where n equals the rank of source.

+
+
+

Examples#

+

Sample program:

+
program demo_spread
+implicit none
+
+integer a1(4,3), a2(3,4), v(4), s
+
+   write(*,'(a)' ) &
+   'TEST SPREAD(3)                                      ', &
+   '  SPREAD(3) is a FORTRAN90 function which replicates', &
+   '  an array by adding a dimension.                   ', &
+   ' '
+
+   s = 99
+   call printi('suppose we have a scalar S',s)
+
+   write(*,*) 'to add a new dimension (1) of extent 4 call'
+   call printi('spread( s, dim=1, ncopies=4 )',spread ( s, 1, 4 ))
+
+   v = [ 1, 2, 3, 4 ]
+   call printi(' first we will set V to',v)
+
+   write(*,'(a)')' and then do "spread ( v, dim=2, ncopies=3 )"'
+   a1 = spread ( v, dim=2, ncopies=3 )
+   call printi('this adds a new dimension (2) of extent 3',a1)
+
+   a2 = spread ( v, 1, 3 )
+   call printi(' spread(v,1,3) adds a new dimension (1) of extent 3',a2)
+   ! add more
+   a2 = spread ( v, 1, 3 )
+   call printi(' spread(v,1,3) adds a new dimension (1) of extent 3',a2)
+
+contains
+! CONVENIENCE ROUTINE; NOT DIRECTLY CONNECTED TO SPREAD(3)
+subroutine printi(title,a)
+use, intrinsic :: iso_fortran_env, only : stderr=>ERROR_UNIT,&
+ & stdin=>INPUT_UNIT, stdout=>OUTPUT_UNIT
+implicit none
+
+!@(#) print small 2d integer scalar, vector, matrix in row-column format
+
+character(len=*),parameter   :: all='(" ",*(g0,1x))'
+character(len=*),intent(in)  :: title
+character(len=20)            :: row
+integer,intent(in)           :: a(..)
+integer                      :: i
+
+   write(*,all,advance='no')trim(title)
+   ! select rank of input
+   select rank(a)
+   rank (0); write(*,'(a)')' (a scalar)'
+      write(*,'(" > [ ",i0," ]")')a
+   rank (1); write(*,'(a)')' (a vector)'
+      ! find how many characters to use for integers
+      write(row,'(i0)')ceiling(log10(real(maxval(abs(a)))))+2
+      ! use this format to write a row
+      row='(" > [",*(i'//trim(row)//':,","))'
+      do i=1,size(a)
+         write(*,fmt=row,advance='no')a(i)
+         write(*,'(" ]")')
+      enddo
+   rank (2); write(*,'(a)')' (a matrix) '
+      ! find how many characters to use for integers
+      write(row,'(i0)')ceiling(log10(real(maxval(abs(a)))))+2
+      ! use this format to write a row
+      row='(" > [",*(i'//trim(row)//':,","))'
+      do i=1,size(a,dim=1)
+         write(*,fmt=row,advance='no')a(i,:)
+         write(*,'(" ]")')
+      enddo
+   rank default
+      write(stderr,*)'*printi* did not expect rank=', rank(a), &
+       & 'shape=', shape(a),'size=',size(a)
+      stop '*printi* unexpected rank'
+   end select
+   write(*,all) '>shape=',shape(a),',rank=',rank(a),',size=',size(a)
+   write(*,*)
+
+end subroutine printi
+
+end program demo_spread
+
+
+

Results:

+
   TEST SPREAD(3)
+     SPREAD(3) is a FORTRAN90 function which replicates
+     an array by adding a dimension.
+
+    suppose we have a scalar S  (a scalar)
+    > [ 99 ]
+    >shape= ,rank= 0 ,size= 1
+
+    to add a new dimension (1) of extent 4 call
+    spread( s, dim=1, ncopies=4 )  (a vector)
+    > [  99 ]
+    > [  99 ]
+    > [  99 ]
+    > [  99 ]
+    >shape= 4 ,rank= 1 ,size= 4
+
+     first we will set V to  (a vector)
+    > [  1 ]
+    > [  2 ]
+    > [  3 ]
+    > [  4 ]
+    >shape= 4 ,rank= 1 ,size= 4
+
+    and then do "spread ( v, dim=2, ncopies=3 )"
+    this adds a new dimension (2) of extent 3  (a matrix)
+    > [  1,  1,  1 ]
+    > [  2,  2,  2 ]
+    > [  3,  3,  3 ]
+    > [  4,  4,  4 ]
+    >shape= 4 3 ,rank= 2 ,size= 12
+
+     spread(v,dim=1,ncopies=3) adds a new dimension (1) (a matrix)
+    > [  1,  2,  3,  4 ]
+    > [  1,  2,  3,  4 ]
+    > [  1,  2,  3,  4 ]
+    >shape= 3 4 ,rank= 2 ,size= 12
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

merge(3), +pack(3), +unpack(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+ +
+
+
+

unpack#

+
+

Name#

+

unpack(3) - [ARRAY:CONSTRUCTION] Scatter the elements of a vector +into an array using a mask

+
+
+

Synopsis#

+
    result = unpack(vector, mask, field)
+
+
+
     type(TYPE(kind=KIND)) unpack(vector, mask, field)
+
+      type(TYPE(kind=KIND)),intent(in) :: vector(:)
+      logical,intent(in)               :: mask(..)
+      type(TYPE(kind=KIND)),intent(in) :: field(..)
+
+
+
+
+

Characteristics#

+
    +
  • vector is a rank-one array of any type

  • +
  • mask is a logical array

  • +
  • field is the same type and type parameters as VECTOR conformable with mask.

  • +
  • The result is an array of the same type and type parameters as vector +and the same shape as mask.

  • +
+
+
+

Description#

+

unpack(3) scatters the elements of vector into a copy of an +array field of any rank using .true. values from mask in array +element order to specify placement of the vector values.

+

So a copy of field is generated with select elements replaced with +values from vector. This allows for complex replacement patterns +that would be difficult when using array syntax or multiple assignment +statements, particularly when the replacements are conditional.

+
+
+

Options#

+
    +
  • +
    vector

    New values to place into specified locations in field. +It shall have at least as many elements as mask has .true. +values.

    +
    +
    +
  • +
  • +
    mask

    Shall be an array that specifies which values +in field are to be replaced with values from vector.

    +
    +
    +
  • +
  • +
    field

    The input array to be altered.

    +
    +
    +
  • +
+
+
+

Result#

+

The element of the result that corresponds to the ith true element +of mask, in array element order, has the value vector(i) for i = +1, 2, …, t, where t is the number of true values in mask. Each +other element has a value equal to **field* if field is scalar or to the +corresponding element of **field if it is an array.

+

The resulting array corresponds to field with .true. elements +of mask replaced by values from vector in array element order.

+
+
+

Examples#

+

Particular values may be “scattered” to particular positions in an array by using

+
                       1 0 0
+    If M is the array  0 1 0
+                       0 0 1
+
+    V is the array [1, 2, 3],
+                               . T .
+    and Q is the logical mask  T . .
+                               . . T
+    where "T" represents true and "." represents false, then the result of
+
+    UNPACK (V, MASK = Q, FIELD = M) has the value
+
+      1 2 0
+      1 1 0
+      0 0 3
+
+    and the result of UNPACK (V, MASK = Q, FIELD = 0) has the value
+
+      0 2 0
+      1 0 0
+      0 0 3
+
+
+

Sample program:

+
program demo_unpack
+implicit none
+logical,parameter :: T=.true., F=.false.
+
+integer :: vector(2)  = [1,1]
+
+! mask and field must conform
+integer,parameter :: r=2, c=2
+logical :: mask(r,c)  = reshape([ T,F,F,T ],[2,2])
+integer :: field(r,c) = 0, unity(2,2)
+
+   ! basic usage
+   unity = unpack( vector, mask, field )
+   call print_matrix_int('unity=', unity)
+
+   ! if FIELD is a scalar it is used to fill all the elements
+   ! not assigned to by the vector and mask.
+   call print_matrix_int('scalar field',         &
+   & unpack(                                     &
+   & vector=[ 1, 2, 3, 4 ],                      &
+   & mask=reshape([ T,F,T,F,F,F,T,F,T ], [3,3]), &
+   & field=0) )
+
+contains
+
+   subroutine print_matrix_int(title,arr)
+   ! convenience routine:
+   ! just prints small integer arrays in row-column format
+   implicit none
+   character(len=*),intent(in)  :: title
+   integer,intent(in)           :: arr(:,:)
+   integer                      :: i
+   character(len=:),allocatable :: biggest
+
+      write(*,*)trim(title)
+      ! make buffer to write integer into
+      biggest='           '
+      ! find how many characters to use for integers
+      write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+      ! use this format to write a row
+      biggest='("  [",*(i'//trim(biggest)//':,","))'
+      ! print one row of array at a time
+      do i=1,size(arr,dim=1)
+         write(*,fmt=biggest,advance='no')arr(i,:)
+         write(*,'(" ]")')
+      enddo
+   end subroutine print_matrix_int
+
+end program demo_unpack
+
+
+

Results:

+
   > unity=
+   >  [ 1, 0 ]
+   >  [ 0, 1 ]
+   > scalar field
+   >  [  1,  0,  3 ]
+   >  [  0,  0,  0 ]
+   >  [  2,  0,  4 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

merge(3), +pack(3), +spread(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

allocated#

+
+

Name#

+

allocated(3) - [ARRAY:INQUIRY] Allocation status of an allocatable entity

+
+
+

Synopsis#

+
    result = allocated(array|scalar)
+
+
+
     logical function allocated(array,scalar)
+
+      type(TYPE(kind=**)),allocatable,optional :: array(..)
+      type(TYPE(kind=**)),allocatable,optional :: scalar
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • array may be any allocatable array object of any type.

  • +
  • scalar may be any allocatable scalar of any type.

  • +
  • the result is a default logical scalar

  • +
+
+
+

Description#

+

allocated(3) checks the allocation status of both arrays +and scalars.

+

At least one and only one of array or scalar must be specified.

+
+
+

Options#

+
    +
  • +
    entity

    the allocatable object to test.

    +
    +
    +
  • +
+
+
+

Result#

+

If the argument is allocated then the result is .true.; otherwise, +it returns .false..

+
+
+

Examples#

+

Sample program:

+
program demo_allocated
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=sp), allocatable :: x(:)
+character(len=256) :: message
+integer :: istat
+  ! basics
+   if( allocated(x)) then
+       write(*,*)'do things if allocated'
+   else
+       write(*,*)'do things if not allocated'
+   endif
+
+   ! if already allocated, deallocate
+   if ( allocated(x) ) deallocate(x,STAT=istat, ERRMSG=message )
+   if(istat.ne.0)then
+      write(*,*)trim(message)
+      stop
+   endif
+
+   ! only if not allocated, allocate
+   if ( .not. allocated(x) ) allocate(x(20))
+
+  ! allocation and intent(out)
+   call intentout(x)
+   write(*,*)'note it is deallocated!',allocated(x)
+
+   contains
+
+   subroutine intentout(arr)
+   ! note that if arr has intent(out) and is allocatable,
+   ! arr is deallocated on entry
+   real(kind=sp),intent(out),allocatable :: arr(:)
+       write(*,*)'note it was allocated in calling program',allocated(arr)
+   end subroutine intentout
+
+end program demo_allocated
+
+
+

Results:

+
 >  do things if not allocated
+ >  note it was allocated in calling program F
+ >  note it is deallocated! F
+
+
+
+
+

Standard#

+

Fortran 95. allocatable scalar entities were added in Fortran 2003.

+
+
+

See Also#

+

move_alloc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

is_contiguous#

+
+

Name#

+

is_contiguous(3) - [ARRAY:INQUIRY] Test if object is contiguous

+
+
+

Synopsis#

+
    result = is_contiguous(array)
+
+
+
     logical function is_contiguous(array)
+
+      type(TYPE(kind=**)),intent(in) :: array
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • array may be of any type. It shall be an array or assumed-rank. If it is a pointer it +shall be associated.

  • +
  • the result is a default logical scalar

  • +
+
+
+

Description#

+

is_contiguous(3) returns .true. if and only if an object is +contiguous.

+

An object is contiguous if it is

+
    +
  • (1) +an object with the CONTIGUOUS attribute,

  • +
  • (2) +a nonpointer whole array that is not assumed-shape,

  • +
  • (3) +an assumed-shape array that is argument associated with an array +that is contiguous,

  • +
  • (4) +an array allocated by an ALLOCATE statement,

  • +
  • (5) +a pointer associated with a contiguous target, or

  • +
  • (6) +a nonzero-sized array section provided that

    +
      +
    • (a) +its base object is contiguous,

    • +
    • (b) +it does not have a vector subscript,

    • +
    • (c) +the elements of the section, in array element order, are a +subset of the base object elements that are consecutive in +array element order,

    • +
    • (d) +if the array is of type character and a substring-range +appears, the substring-range specifies all of the characters +of the parent-string,

    • +
    • (e) +only its final part-ref has nonzero rank, and

    • +
    • (f) +it is not the real or imaginary part of an array of type +complex.

    • +
    +
  • +
+

An object is not contiguous if it is an array subobject, and

+
    +
  • the object has two or more elements,

  • +
  • the elements of the object in array element order are not +consecutive in the elements of the base object,

  • +
  • the object is not of type character with length zero, and

  • +
  • the object is not of a derived type that has no ultimate +components other than zero-sized arrays and

  • +
  • characters with length zero.

  • +
+

It is processor-dependent whether any other object is contiguous.

+
+
+

Options#

+
    +
  • +
    array

    An array of any type to be tested for being contiguous. If it is a +pointer it shall be associated.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has the value .true. if array is contiguous, and .false. +otherwise.

+
+
+

Examples#

+

Sample program:

+
program demo_is_contiguous
+implicit none
+intrinsic is_contiguous
+real, DIMENSION (1000, 1000), TARGET :: A
+real, DIMENSION (:, :), POINTER       :: IN, OUT
+   IN => A              ! Associate IN with target A
+   OUT => A(1:1000:2,:) ! Associate OUT with subset of target A
+   !
+   write(*,*)'IN is ',IS_CONTIGUOUS(IN)
+   write(*,*)'OUT is ',IS_CONTIGUOUS(OUT)
+   !
+end program demo_is_contiguous
+
+
+

Results:

+
    IN is  T
+    OUT is  F
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

lbound#

+
+

Name#

+

lbound(3) - [ARRAY:INQUIRY] Lower dimension bounds of an array

+
+
+

Synopsis#

+
    result = lbound(array [,dim] [,kind] )
+
+
+
     elemental TYPE(kind=KIND) function lbound(array,dim,kind)
+
+      TYPE(kind=KIND),intent(in)           :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      integer(kind=**),intent(in),optional :: kind
+
+
+
+
+

Characteristics#

+
    +
  • array shall be assumed-rank or an array, of any type. +It cannot be an unallocated allocatable array or a pointer that is not associated.

  • +
  • dim shall be a scalar integer. +The corresponding actual argument shall not be an optional dummy +argument, a disassociated pointer, or an unallocated allocatable.

  • +
  • kind an integer initialization expression indicating the kind +parameter of the result.

  • +
  • The return value is of type integer and of kind kind. If kind +is absent, the return value is of default integer kind. +The result is scalar if dim is present; otherwise, the result is +an array of rank one and size n, where n is the rank of array.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

result(3) returns the lower bounds of an array, or a single lower +bound along the dim dimension.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array, of any type.

    +
    +
    +
  • +
  • +
    dim

    Shall be a scalar integer. +If dim is absent, the result is an array of the upper bounds of +array.

    +
    +
    +
  • +
  • +
    kind

    An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, +the result is an array of the lower bounds of array.

+

If dim is +present, the result is a scalar corresponding to the lower bound of the +array along that dimension. If array is an expression rather than +a whole array or array structure component, or if it has a zero extent +along the relevant dimension, the lower bound is taken to be 1.

+
NOTE1
+
+If **array** is assumed-rank and has rank zero, **dim** cannot be
+present since it cannot satisfy the requirement **1 <= dim <= 0**.
+
+
+
+
+

Examples#

+

Note that in my opinion this function should not be used on assumed-size +arrays or in any function without an explicit interface. Errors can +occur if there is no interface defined.

+

Sample program

+
! program demo_lbound
+module m_bounds
+implicit none
+ contains
+    subroutine msub(arr)
+       !!integer,intent(in) :: arr(*)  ! cannot be assumed-size array
+       integer,intent(in) :: arr(:)
+       write(*,*)'MSUB: LOWER=',lbound(arr), &
+       & 'UPPER=',ubound(arr), &
+       & 'SIZE=',size(arr)
+    end subroutine msub
+ end module m_bounds
+
+ program demo_lbound
+ use m_bounds, only : msub
+ implicit none
+ interface
+    subroutine esub(arr)
+    integer,intent(in) :: arr(:)
+    end subroutine esub
+ end interface
+ integer :: arr(-10:10)
+    write(*,*)'MAIN: LOWER=',lbound(arr), &
+    & 'UPPER=',ubound(arr), &
+    & 'SIZE=',size(arr)
+    call csub()
+    call msub(arr)
+    call esub(arr)
+ contains
+subroutine csub
+   write(*,*)'CSUB: LOWER=',lbound(arr), &
+   & 'UPPER=',ubound(arr), &
+   & 'SIZE=',size(arr)
+end subroutine csub
+end
+
+ subroutine esub(arr)
+ implicit none
+ integer,intent(in) :: arr(:)
+    ! WARNING: IF CALLED WITHOUT AN EXPLICIT INTERFACE
+    ! THIS WILL GIVE UNDEFINED ANSWERS (like 0,0,0)
+    write(*,*)'ESUB: LOWER=',lbound(arr), &
+    & 'UPPER=',ubound(arr), &
+    & 'SIZE=',size(arr)
+ end subroutine esub
+
+!end program demo_lbound
+
+
+

Results:

+
   MAIN: LOWER=         -10 UPPER=          10 SIZE=          21
+   CSUB: LOWER=         -10 UPPER=          10 SIZE=          21
+   MSUB: LOWER=           1 UPPER=          21 SIZE=          21
+   ESUB: LOWER=           1 UPPER=          21 SIZE=          21
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument - Fortran 2003

+
+
+

See Also#

+
+

Array inquiry:#

+
    +
  • size(3) - Determine the size of an array

  • +
  • rank(3) - Rank of a data object

  • +
  • shape(3) - Determine the shape of an array

  • +
  • ubound(3) - Upper dimension bounds of an array

  • +
+

co_ubound(3), +co_lbound(3)

+
+
+

State Inquiry:#

+ +
+
+

Kind Inquiry:#

+ +
+
+

Bit Inquiry:#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

rank#

+
+

Name#

+

rank(3) - [ARRAY:INQUIRY] Rank of a data object

+
+
+

Synopsis#

+
    result = rank(a)
+
+
+
     integer function rank(a)
+
+      type(TYPE(kind=**)),intent(in) :: a(..)
+
+
+
+
+

Characteristics#

+
    +
  • a can be of any type TYPE and rank.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

rank(3) returns the rank of a scalar or array data object.

+

The rank of an array is the number of dimensions it has (zero for a scalar).

+
+
+

Options#

+
    +
  • a is the data object to query the dimensionality of. The rank returned +may be from 0 to 16.

    +

    The argument a may be any data object type, including an assumed-rank +array.

    +
  • +
+
+
+

Result#

+

For arrays, their rank is returned; for scalars zero is returned.

+
+
+

Examples#

+

Sample program:

+
program demo_rank
+implicit none
+
+! a bunch of data objects to query
+integer           :: a
+real, allocatable :: b(:,:)
+real, pointer     :: c(:)
+complex           :: d
+
+! make up a type
+type mytype
+   integer :: int
+   real :: float
+   character :: char
+end type mytype
+type(mytype) :: any_thing(1,2,3,4,5)
+
+  ! basics
+   print *, 'rank of scalar a=',rank(a)
+   ! you can query this array even though it is not allocated
+   print *, 'rank of matrix b=',rank(b)
+   print *, 'rank of vector pointer c=',rank(c)
+   print *, 'rank of complex scalar d=',rank(d)
+
+  ! you can query any type, not just intrinsics
+   print *, 'rank of any arbitrary type=',rank(any_thing)
+
+  ! an assumed-rank object may be queried
+   call query_int(10)
+   call query_int([20,30])
+   call query_int( reshape([40,50,60,70],[2,2]) )
+
+  ! you can even query an unlimited polymorphic entity
+   call query_anything(10.0)
+   call query_anything([.true.,.false.])
+   call query_anything( reshape([40.0,50.0,60.0,70.0],[2,2]) )
+
+contains
+
+subroutine query_int(data_object)
+! It is hard to do much with something dimensioned
+! name(..) if not calling C except inside of a
+! SELECT_RANK construct but one thing you can
+! do is call the inquiry functions ...
+integer,intent(in) :: data_object(..)
+character(len=*),parameter :: all='(*(g0,1x))'
+
+   if(rank(data_object).eq.0)then
+      print all,&
+      & 'passed a scalar to an assumed rank,  &
+      & rank=',rank(data_object)
+   else
+      print all,&
+      & 'passed an array to an assumed rank,  &
+      & rank=',rank(data_object)
+   endif
+
+end subroutine query_int
+
+subroutine query_anything(data_object)
+class(*),intent(in) ::data_object(..)
+character(len=*),parameter :: all='(*(g0,1x))'
+  if(rank(data_object).eq.0)then
+    print all,&
+    &'passed a scalar to an unlimited polymorphic rank=', &
+    & rank(data_object)
+  else
+    print all,&
+    & 'passed an array to an unlimited polymorphic, rank=', &
+    & rank(data_object)
+  endif
+end subroutine query_anything
+
+end program demo_rank
+
+
+

Results:

+
    rank of scalar a=           0
+    rank of matrix b=           2
+    rank of vector pointer c=           1
+    rank of complex scalar d=           0
+    rank of any arbitrary type=           5
+   passed a scalar to an assumed rank,   rank= 0
+   passed an array to an assumed rank,   rank= 1
+   passed an array to an assumed rank,   rank= 2
+   passed a scalar to an unlimited polymorphic rank= 0
+   passed an array to an unlimited polymorphic, rank= 1
+   passed an array to an unlimited polymorphic, rank= 2
+
+
+
+
+

Standard#

+
+
+

See also#

+
+

Array inquiry:#

+
    +
  • size(3) - Determine the size of an array

  • +
  • rank(3) - Rank of a data object

  • +
  • shape(3) - Determine the shape of an array

  • +
  • ubound(3) - Upper dimension bounds of an array

  • +
  • lbound(3) - Lower dimension bounds of an array

  • +
+
+
+

State Inquiry:#

+ +
+
+

Kind Inquiry:#

+ +
+
+

Bit Inquiry:#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+
+

#

+
+

shape#

+
+

Name#

+

shape(3) - [ARRAY:INQUIRY] Determine the shape of an array or scalar

+
+
+

Synopsis#

+
  result = shape( source [,kind] )
+
+
+
   integer(kind=KIND) function shape( source, KIND )
+
+    type(TYPE(kind=**)),intent(in)       :: source(..)
+    integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • source is an array or scalar of any type. If source is a pointer +it must be associated and allocatable arrays must be allocated. It shall +not be an assumed-size array.

  • +
  • KIND is a constant integer initialization expression.

  • +
  • the result is an integer array of rank one with size equal to the +rank of source of the kind specified by KIND if KIND +is present, otherwise it has the default integer kind.

  • +
+
+
+

Description#

+

shape(3) queries the shape of an array.

+
+
+

Options#

+
    +
  • +
    source

    an array or scalar of any type. If source is a pointer it +must be associated and allocatable arrays must be allocated.

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

An integer array of rank one with as many elements as source +has dimensions.

+

The elements of the resulting array correspond to the extent of +source along the respective dimensions.

+

If source is a scalar, the result is an empty array (a rank-one +array of size zero).

+
+
+

Examples#

+

Sample program:

+
program demo_shape
+implicit none
+character(len=*),parameter :: all='(*(g0,1x))'
+integer, dimension(-1:1, -1:2) :: a
+   print all, 'shape of array=',shape(a)
+   print all, 'shape of constant=',shape(42)
+   print all, 'size of shape of constant=',size(shape(42))
+   print all, 'ubound of array=',ubound(a)
+   print all, 'lbound of array=',lbound(a)
+end program demo_shape
+
+
+

Results:

+
   shape of array= 3 4
+   shape of constant=
+   size of shape of constant= 0
+   ubound of array= 1 2
+   lbound of array= -1 -1
+
+
+
+
+

Standard#

+

Fortran 95 ; with KIND argument Fortran 2003

+
+
+

See Also#

+
+

Array inquiry:#

+
    +
  • size(3) - Determine the size of an array

  • +
  • rank(3) - Rank of a data object

  • +
  • ubound(3) - Upper dimension bounds of an array

  • +
  • lbound(3) - Lower dimension bounds of an array

  • +
+
+
+

State Inquiry:#

+ +
+
+

Kind Inquiry:#

+ +
+
+

Bit Inquiry:#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

size#

+
+

Name#

+

size(3) - [ARRAY:INQUIRY] Determine the size of an array or extent of one dimension

+
+
+

Synopsis#

+
    result = size(array [,dim] [,kind])
+
+
+
     integer(kind=KIND) function size(array,dim,kind)
+
+      type(TYPE(kind=KIND),intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • array is an assumed-rank array or array of any type and associated +kind.

    +

    If array is a pointer it must be associated and allocatable arrays +must be allocated.

    +
  • +
  • dim is an integer scalar

  • +
  • kind is a scalar integer constant expression.

  • +
  • the result is an integer scalar of kind KIND. If KIND is absent +a integer of default kind is returned.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

size(3) returns the total number of elements in an array, or +if dim is specified returns the number of elements along that +dimension.

+

size(3) determines the extent of array along a specified +dimension dim, or the total number of elements in array if +dim is absent.

+
+
+

Options#

+
    +
  • +
    array

    the array to measure the number of elements of. +If **array* is an assumed-size array, dim shall be present with a value less +than the rank of **array**.

    +
    +
    +
  • +
  • +
    dim

    a value shall be +in the range from 1 to n, where n equals the rank of array.

    +
    +
    +

    If not present the total number of elements of the entire array +are returned.

    +
  • +
  • +
    kind

    An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +

    If absent the kind type parameter of the returned value is that of +default integer type.

    +

    The kind must allow for the magnitude returned by size or +results are undefined.

    +

    If kind is absent, the return value is of default integer kind.

    +
  • +
+
+
+

Result#

+

If dim is not present array is assumed-rank, the result has a +value equal to PRODUCT(SHAPE(ARRAY,KIND)). Otherwise, the result +has a value equal to the total number of elements of array.

+

If dim is present the number of elements along that dimension +are returned, except that if ARRAY is assumed-rank and associated +with an assumed-size array and DIM is present with a value equal to +the rank of array, the value is -1.

+

NOTE1

+

If array is assumed-rank and has rank zero, dim cannot be +present since it cannot satisfy the requirement

+

1 <= DIM <= 0.

+
+
+

Examples#

+

Sample program:

+
program demo_size
+implicit none
+integer :: arr(0:2,-5:5)
+   write(*,*)'SIZE of simple two-dimensional array'
+   write(*,*)'SIZE(arr)       :total count of elements:',size(arr)
+   write(*,*)'SIZE(arr,DIM=1) :number of rows         :',size(arr,dim=1)
+   write(*,*)'SIZE(arr,DIM=2) :number of columns      :',size(arr,dim=2)
+
+   ! pass the same array to a procedure that passes the value two
+   ! different ways
+   call interfaced(arr,arr)
+contains
+
+subroutine interfaced(arr1,arr2)
+! notice the difference in the array specification
+! for arr1 and arr2.
+integer,intent(in) :: arr1(:,:)
+integer,intent(in) :: arr2(2,*)
+   !
+   write(*,*)'interfaced assumed-shape array'
+   write(*,*)'SIZE(arr1)        :',size(arr1)
+   write(*,*)'SIZE(arr1,DIM=1)  :',size(arr1,dim=1)
+   write(*,*)'SIZE(arr1,DIM=2)  :',size(arr1,dim=2)
+
+!  write(*,*)'SIZE(arr2)        :',size(arr2)
+   write(*,*)'SIZE(arr2,DIM=1)  :',size(arr2,dim=1)
+!
+! CANNOT DETERMINE SIZE OF ASSUMED SIZE ARRAY LAST DIMENSION
+!  write(*,*)'SIZE(arr2,DIM=2)  :',size(arr2,dim=2)
+
+end subroutine interfaced
+
+end program demo_size
+
+
+

Results:

+
    SIZE of simple two-dimensional array
+    SIZE(arr)       :total count of elements:          33
+    SIZE(arr,DIM=1) :number of rows         :           3
+    SIZE(arr,DIM=2) :number of columns      :          11
+    interfaced assumed-shape array
+    SIZE(arr1)        :          33
+    SIZE(arr1,DIM=1)  :           3
+    SIZE(arr1,DIM=2)  :          11
+    SIZE(arr2,DIM=1)  :           2
+
+
+
+
+

Standard#

+

Fortran 95 , with kind argument - Fortran 2003

+
+
+

See Also#

+
+

Array inquiry:#

+
    +
  • size(3) - Determine the size of an array

  • +
  • rank(3) - Rank of a data object

  • +
  • shape(3) - Determine the shape of an array

  • +
  • ubound(3) - Upper dimension bounds of an array

  • +
  • lbound(3) - Lower dimension bounds of an array

  • +
+
+
+

State Inquiry:#

+ +
+
+

Kind Inquiry:#

+ +
+
+

Bit Inquiry:#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

ubound#

+
+

Name#

+

ubound(3) - [ARRAY:INQUIRY] Upper dimension bounds of an array

+
+
+

Synopsis#

+
    result = ubound(array [,dim] [,kind] )
+
+
+
     elemental TYPE(kind=KIND) function ubound(array,dim,kind)
+
+      TYPE(kind=KIND),intent(in)           :: array
+      integer(kind=**),intent(in),optional :: dim
+      integer(kind=**),intent(in),optional :: kind
+
+
+
+
+

Characteristics#

+
    +
  • array shall be assumed-rank or an array, of any type. +It cannot be an unallocated allocatable array or a pointer that is not associated.

  • +
  • dim shall be a scalar integer. +The corresponding actual argument shall not be an optional dummy +argument, a disassociated pointer, or an unallocated allocatable.

  • +
  • kind an integer initialization expression indicating the kind +parameter of the result.

  • +
  • The return value is of type integer and of kind kind. If kind +is absent, the return value is of default integer kind. +The result is scalar if dim is present; otherwise, the result is +an array of rank one and size n, where n is the rank of array.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

ubound(3) returns the upper bounds of an array, or a single upper +bound along the dim dimension.

+
+
+

Options#

+
    +
  • +
    array

    The assumed-rank or array of any type whose upper bounds are to be +determined. If allocatable it must be allocated; if a pointer it must +be associated. If an assumed-size array, dim must be present.

    +
    +
    +
  • +
  • +
    dim

    a specific dimension of array to determine the bounds of. +If dim is absent, the result is an array of the upper bounds of +array. dim is required if array is an assumed-size array, +and in that case must be less than or equal to the rank of array.

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result. If absent, an integer +of the default kind is returned.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer and of kind kind. If kind +is absent, the return value is of default integer kind.

+

If dim is absent, the result is an array of the upper bounds of +each dimension of the array.

+

If dim is present, the result is a scalar corresponding to the upper +bound of the array along that dimension.

+

If array is an expression rather than a whole array or array +structure component, or if it has a zero extent along the relevant +dimension, the upper bound is taken to be the number of elements along +the relevant dimension.

+

NOTE1 +If ARRAY is assumed-rank and has rank zero, DIM cannot be present +since it cannot satisfy the requirement +1 <= DIM <= 0.

+
+
+

Examples#

+

Note this function should not be used on assumed-size arrays or in any +function without an explicit interface. Errors can occur if there is no +interface defined.

+

Sample program

+
! program demo_ubound
+module m2_bounds
+implicit none
+
+contains
+
+subroutine msub(arr)
+!!integer,intent(in) :: arr(*)  ! cannot be assumed-size array
+integer,intent(in) :: arr(:)
+   write(*,*)'MSUB: LOWER=',lbound(arr),'UPPER=',ubound(arr), &
+   & 'SIZE=',size(arr)
+end subroutine msub
+
+end module m2_bounds
+!
+program demo_ubound
+use m2_bounds, only : msub
+implicit none
+interface
+   subroutine esub(arr)
+   integer,intent(in) :: arr(:)
+   end subroutine esub
+end interface
+integer :: arr(-10:10)
+   write(*,*)'MAIN: LOWER=',lbound(arr),'UPPER=',ubound(arr), &
+   & 'SIZE=',size(arr)
+   call csub()
+   call msub(arr)
+   call esub(arr)
+contains
+subroutine csub
+   write(*,*)'CSUB: LOWER=',lbound(arr),'UPPER=',ubound(arr), &
+   & 'SIZE=',size(arr)
+end subroutine csub
+
+end
+
+subroutine esub(arr)
+implicit none
+integer,intent(in) :: arr(:)
+   ! WARNING: IF CALLED WITHOUT AN EXPLICIT INTERFACE
+   ! THIS WILL GIVE UNDEFINED ANSWERS (like 0,0,0)
+   write(*,*)'ESUB: LOWER=',lbound(arr),'UPPER=',ubound(arr), &
+   & 'SIZE=',size(arr)
+end subroutine esub
+!end program demo_ubound
+
+
+

Results:

+
 >  MAIN: LOWER=         -10 UPPER=          10 SIZE=          21
+ >  CSUB: LOWER=         -10 UPPER=          10 SIZE=          21
+ >  MSUB: LOWER=           1 UPPER=          21 SIZE=          21
+ >  ESUB: LOWER=           1 UPPER=          21 SIZE=          21
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument Fortran 2003

+
+
+

See Also#

+
+

Array inquiry:#

+
    +
  • size(3) - Determine the size of an array

  • +
  • rank(3) - Rank of a data object

  • +
  • shape(3) - Determine the shape of an array

  • +
  • lbound(3) - Lower dimension bounds of an array

  • +
+

co_ubound(3), +co_lbound(3)

+
+
+

State Inquiry:#

+ +
+
+

Kind Inquiry:#

+ +
+
+

Bit Inquiry:#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

maxloc#

+
+

Name#

+

maxloc(3) - [ARRAY:LOCATION] Location of the maximum value within an array

+
+
+

Synopsis#

+
    result = maxloc(array [,mask]) | maxloc(array [,dim] [,mask])
+
+
+
     NUMERIC function maxloc(array, dim, mask)
+
+      NUMERIC,intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • NUMERIC designates any intrinsic numeric type and kind.

  • +
+
+
+

Description#

+

maxloc(3) determines the location of the element in the array with +the maximum value, or, if the dim argument is supplied, determines +the locations of the maximum element along each row of the array in the +dim direction.

+

If mask is present, only the elements for which mask +is .true. are considered. If more than one element in the array has +the maximum value, the location returned is that of the first such element +in array element order.

+

If the array has zero size, or all of the elements +of mask are .false., then the result is an array of zeroes. Similarly, +if dim is supplied and all of the elements of mask along a given +row are zero, the result value for that row is zero.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer, real, or character.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar of type integer, with a value between +one and the rank of array, inclusive. It may not be an optional +dummy argument.

    +
    +
    +
  • +
  • +
    mask

    Shall be an array of type logical, and conformable with array.

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, the result is a rank-one array with a length equal +to the rank of array. If dim is present, the result is an array +with a rank one less than the rank of array, and a size corresponding +to the size of array with the dim dimension removed. If dim +is present and array has a rank of one, the result is a scalar. In +all cases, the result is of default integer type.

+

The value returned is reference to the offset from the beginning of the +array, not necessarily the subscript value if the array subscripts do +not start with one.

+
+
+

Examples#

+

sample program

+
program demo_maxloc
+implicit none
+integer      :: ii
+integer,save :: i(-3:3)=[(abs(abs(ii)-50),ii=-3,3)]
+integer,save :: ints(3,5)= reshape([&
+   1,  2,  3,  4,  5, &
+   10, 20, 30, 40, 50, &
+   11, 22, 33, 44, 55  &
+],shape(ints),order=[2,1])
+
+    write(*,*) maxloc(ints)
+    write(*,*) maxloc(ints,dim=1)
+    write(*,*) maxloc(ints,dim=2)
+    ! when array bounds do not start with one remember MAXLOC(3) returns
+    ! the offset relative to the lower bound-1 of the location of the
+    ! maximum value, not the subscript of the maximum value. When the
+    ! lower bound of the array is one, these values are the same. In
+    ! other words, MAXLOC(3) returns the subscript of the value assuming
+    ! the first subscript of the array is one no matter what the lower
+    ! bound of the subscript actually is.
+    write(*,'(g0,1x,g0)') (ii,i(ii),ii=lbound(i,dim=1),ubound(i,dim=1))
+    write(*,*)maxloc(i)
+
+end program demo_maxloc
+
+
+

Results:

+
 >     3       5
+ >     3       3       3       3       3
+ >     5       5       5
+ >  -3 47
+ >  -2 48
+ >  -1 49
+ >  0 50
+ >  1 49
+ >  2 48
+ >  3 47
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+ +

fortran-lang intrinsic descriptions

+
+
+
+

minloc#

+
+

Name#

+

minloc(3) - [ARRAY:LOCATION] Location of the minimum value within an array

+
+
+

Synopsis#

+
    result = minloc(array [,mask]) | minloc(array [,dim] [,mask])
+
+
+
     NUMERIC function minloc(array, dim, mask)
+
+      NUMERIC,intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • NUMERIC is any numeric type and kind.

  • +
+
+
+

Description#

+

minloc(3) determines the location of the element in the array with +the minimum value, or, if the dim argument is supplied, determines +the locations of the minimum element along each row of the array in +the dim direction.

+

If mask is present, only the elements for which mask is true. +are considered.

+

If more than one element in the array has the minimum value, the +location returned is that of the first such element in array element +order.

+

If the array has zero size, or all of the elements of mask are +.false., then the result is an array of zeroes. Similarly, if dim +is supplied and all of the elements of mask along a given row are +zero, the result value for that row is zero.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer, real, or character.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar of type integer, with a value between +one and the rank of array, inclusive. It may not be an optional +dummy argument.

    +
    +
    +
  • +
  • +
    mask

    Shall be an array of type logical, and conformable with array.

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, the result is a rank-one array with a length equal +to the rank of array. If dim is present, the result is an array +with a rank one less than the rank of array, and a size corresponding +to the size of array with the dim dimension removed. If dim +is present and array has a rank of one, the result is a scalar. In +all cases, the result is of default integer type.

+
+
+

Examples#

+

sample program:

+
program demo_minloc
+implicit none
+integer,save :: ints(3,5)= reshape([&
+   4, 10,  1,  7, 13, &
+   9, 15,  6, 12,  3, &
+  14,  5, 11,  2,  8  &
+],shape(ints),order=[2,1])
+   write(*,*) minloc(ints)
+   write(*,*) minloc(ints,dim=1)
+   write(*,*) minloc(ints,dim=2)
+   ! where in each column is the smallest number .gt. 10 ?
+   write(*,*) minloc(ints,dim=2,mask=ints.gt.10)
+   ! a one-dimensional array with dim=1 explicitly listed returns a scalar
+   write(*,*) minloc(pack(ints,.true.),dim=1) ! scalar
+end program demo_minloc
+
+
+

Results:

+
 >        1       3
+ >        1       3       1       3       2
+ >        3       5       4
+ >        5       4       3
+ >        7
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

findloc#

+
+

Name#

+

findloc(3) - [ARRAY:LOCATION] Location of first element of ARRAY +identified by MASK along dimension DIM matching a target value

+
+
+

Synopsis#

+
    result = findloc (array, value, dim [,mask] [,kind] [,back]) |
+             findloc (array, value [,mask] [,kind] [,back])
+
+
+
     function findloc (array, value, dim, mask, kind, back)
+
+      type TYPE(kind=KIND),intent(in)      :: array(..)
+      type TYPE(kind=KIND),intent(in)      :: value
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+      integer(kind=**),intent(in),optional :: kind
+      logical(kind=**),intent(in),optional :: back
+
+
+
+
+

Characteristics#

+
    +
  • array is an array of any intrinsic type.

  • +
  • value shall be scalar but in type conformance with array, +as specified for the operator == or the operator .EQV..

  • +
  • dim an integer corresponding to a dimension of array. +The corresponding actual argument shall not be an optional dummy +argument.

  • +
  • mask is logical and shall be conformable with array.

  • +
  • kind a scalar integer initialization expression (ie. a constant)

  • +
  • back a logical scalar.

  • +
  • the result is integer of default kind or kind kind if the +kind argument is present. If dim does not appear, the result +is an array of rank one and of size equal to the rank of array; +otherwise, the result is an array of the same rank and shape as +array reduced by the dimension dim.

  • +
+

NOTE: a kind designated as ** may be any supported kind for the type

+
+
+

Description#

+

findloc(3) returns the location of the first element of array +identified by mask along dimension dim having a value equal +to value.

+

If both array and value are of type logical, the comparison is +performed with the .eqv. operator; otherwise, the comparison is +performed with the == operator. If the value of the comparison is +.true., that element of array matches value.

+

If only one element matches value, that element’s subscripts are +returned. Otherwise, if more than one element matches value and +back is absent or present with the value .false., the element whose +subscripts are returned is the first such element, taken in array +element order. If back is present with the value .true., the element +whose subscripts are returned is the last such element, taken in array +element order.

+
+
+

Options#

+
    +
  • +
    array

    shall be an array of intrinsic type.

    +
    +
    +
  • +
  • +
    value

    shall be scalar and in type conformance with array.

    +
    +
    +
  • +
  • +
    dim

    shall be an integer scalar with a value in the range 1 <= DIM <= +n, where n is the rank of array. The corresponding actual argument +shall not be an optional dummy argument.

    +
    +
    +
  • +
  • +
    mask

    (optional) shall be of type logical and shall be conformable with +array.

    +
    +
    +
  • +
  • +
    kind

    (optional) shall be a scalar integer initialization expression.

    +
    +
    +
  • +
  • +
    back

    (optional) shall be a logical scalar.

    +
    +
    +
  • +
+
+
+

Result#

+

kind is present, the kind type +parameter is that specified by the value of kind; otherwise the kind +type parameter is that of default integer type. If dim does not appear, +the result is an array of rank one and of size equal to the rank of +array; otherwise, the result is of rank n - 1 and shape

+
   [d1, d2, . . ., dDIM-1, dDIM+1, . . ., dn ]
+
+
+

where

+
   [d1, d2, . . ., dn ]
+
+
+

is the shape of array.

+
+
+

Result#

+
    +
  • Case (i): +The result of findloc (array, value) is a rank-one array whose +element values are the values of the subscripts of an element of +array whose value matches value. If there is such a value, the +ith subscript returned lies in the range 1 to ei, where ei is the +extent of the ith dimension of array. If no elements match value +or array has size zero, all elements of the result are zero.

  • +
  • Case (ii): +the result of findloc (array, value, mask = mask) is a +rank-one array whose element values are the values of the subscripts +of an element of array, corresponding to a true element of mask, +whose value matches value. If there is such a value, the ith +subscript returned lies in the range 1 to ei, where ei is the +extent of the ith dimension of array. If no elements match +value, array has size zero, or every element of mask has the +value false, all elements of the result are zero.

  • +
+
+
+

Examples#

+

Sample program:

+
program demo_findloc
+logical,parameter :: T=.true., F=.false.
+integer,allocatable :: ibox(:,:)
+logical,allocatable :: mask(:,:)
+  ! basics
+   ! the first element matching the value is returned AS AN ARRAY
+   call printi('== 6',findloc ([2, 6, 4, 6], value = 6))
+   call printi('== 6',findloc ([2, 6, 4, 6], value = 6,back=.true.))
+   ! the first element matching the value is returned AS A SCALAR
+   call printi('== 6',findloc ([2, 6, 4, 6], value = 6,dim=1))
+   call printi('== 6',findloc ([2, 6, 4, 6], value = 6,back=.true.,dim=1))
+
+   ibox=reshape([ 0,-5,  7, 7, &
+                  3, 4, -1, 2, &
+                  1, 5,  6, 7] ,shape=[3,4],order=[2,1])
+
+   mask=reshape([ T, T, F, T, &
+                  T, T, F, T, &
+                  T, T, F, T] ,shape=[3,4],order=[2,1])
+
+   call printi('array is', ibox )
+   call printl('mask  is', mask )
+   print *, 'so for == 7 and back=.false.'
+   call printi('so for == 7 the address of the element is', &
+           & findloc (ibox, 7, mask = mask) )
+   print *, 'so for == 7 and back=.true.'
+   call printi('so for == 7 the address of the element is', &
+           & findloc (ibox, 7, mask = mask, back=.true.) )
+
+   print *,'This is independent of declared lower bounds for the array'
+
+   print *, ' using dim=N'
+   ibox=reshape([ 1,  2, -9,  &
+                  2,  2,  6 ] ,shape=[2,3],order=[2,1])
+
+   call printi('array is', ibox )
+   ! has the value [2, 1, 0] and
+   call printi('',findloc (ibox, value = 2, dim = 1) )
+   ! has the value [2, 1].
+   call printi('',findloc (ibox, value = 2, dim = 2) )
+contains
+! GENERIC ROUTINES TO PRINT MATRICES
+subroutine printl(title,a)
+implicit none
+!@(#) print small 2d logical scalar, vector, matrix in row-column format
+character(len=*),intent(in)  :: title
+logical,intent(in)           :: a(..)
+
+character(len=*),parameter   :: row='(" > [ ",*(l1:,","))'
+character(len=*),parameter   :: all='(" ",*(g0,1x))'
+logical,allocatable          :: b(:,:)
+integer                      :: i
+   write(*,all,advance='no')trim(title)
+   ! copy everything to a matrix to keep code simple
+   select rank(a)
+   rank (0); write(*,'(a)')' (a scalar)'; b=reshape([a],[1,1])
+   rank (1); write(*,'(a)')' (a vector)'; b=reshape(a,[size(a),1])
+   rank (2); write(*,'(a)')' (a matrix)'; b=a
+   rank default; stop '*printl* unexpected rank'
+   end select
+   do i=1,size(b,dim=1)
+      write(*,fmt=row,advance='no')b(i,:)
+      write(*,'(" ]")')
+   enddo
+   write(*,all) '>shape=',shape(a),',rank=',rank(a),',size=',size(a)
+   write(*,*)
+end subroutine printl
+
+subroutine printi(title,a)
+implicit none
+!@(#) print small 2d integer scalar, vector, matrix in row-column format
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: a(..)
+character(len=*),parameter   :: all='(" ",*(g0,1x))'
+character(len=20)            :: row
+integer,allocatable          :: b(:,:)
+integer                      :: i
+   write(*,all,advance='no')trim(title)
+   ! copy everything to a matrix to keep code simple
+   select rank(a)
+   rank (0); write(*,'(a)')' (a scalar)'; b=reshape([a],[1,1])
+   rank (1); write(*,'(a)')' (a vector)'; b=reshape(a,[size(a),1])
+   rank (2); write(*,'(a)')' (a matrix)'; b=a
+   rank default; stop '*printi* unexpected rank'
+   end select
+   ! find how many characters to use for integers
+   write(row,'(i0)')ceiling(log10(real(maxval(abs(b)))))+2
+   ! use this format to write a row
+   row='(" > [",*(i'//trim(row)//':,","))'
+   do i=1,size(b,dim=1)
+      write(*,fmt=row,advance='no')b(i,:)
+      write(*,'(" ]")')
+   enddo
+   write(*,all) '>shape=',shape(a),',rank=',rank(a),',size=',size(a)
+   write(*,*)
+end subroutine printi
+end program demo_findloc
+
+
+

Results:

+
 >  == 6  (a vector)
+ >  > [  2 ]
+ >  >shape= 1 ,rank= 1 ,size= 1
+ >
+ >  == 6  (a vector)
+ >  > [  4 ]
+ >  >shape= 1 ,rank= 1 ,size= 1
+ >
+ >  == 6  (a scalar)
+ >  > [  2 ]
+ >  >shape= ,rank= 0 ,size= 1
+ >
+ >  == 6  (a scalar)
+ >  > [  4 ]
+ >  >shape= ,rank= 0 ,size= 1
+ >
+ >  array is  (a matrix)
+ >  > [  0, -5,  7,  7 ]
+ >  > [  3,  4, -1,  2 ]
+ >  > [  1,  5,  6,  7 ]
+ >  >shape= 3 4 ,rank= 2 ,size= 12
+ >
+ >  mask  is  (a matrix)
+ >  > [ T,T,F,T ]
+ >  > [ T,T,F,T ]
+ >  > [ T,T,F,T ]
+ >  >shape= 3 4 ,rank= 2 ,size= 12
+ >
+ >  so for == 7 and back=.false.
+ >  so for == 7 the address of the element is  (a vector)
+ >  > [  1 ]
+ >  > [  4 ]
+ >  >shape= 2 ,rank= 1 ,size= 2
+ >
+ >  so for == 7 and back=.true.
+ >  so for == 7 the address of the element is  (a vector)
+ >  > [  3 ]
+ >  > [  4 ]
+ >  >shape= 2 ,rank= 1 ,size= 2
+ >
+ >  This is independent of declared lower bounds for the array
+ >   using dim=N
+ >  array is  (a matrix)
+ >  > [  1,  2, -9 ]
+ >  > [  2,  2,  6 ]
+ >  >shape= 2 3 ,rank= 2 ,size= 6
+ >
+ >    (a vector)
+ >  > [  2 ]
+ >  > [  1 ]
+ >  > [  0 ]
+ >  >shape= 3 ,rank= 1 ,size= 3
+ >
+ >    (a vector)
+ >  > [  2 ]
+ >  > [  1 ]
+ >  >shape= 2 ,rank= 1 ,size= 2
+ >
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • maxloc(3) - Location of the maximum value within an array

  • +
  • minloc(3) - Location of the minimum value within an array

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

transpose#

+
+

Name#

+

transpose(3) - [ARRAY:MANIPULATION] Transpose an array of rank two

+
+
+

Synopsis#

+
    result = transpose(matrix)
+
+
+
     function transpose(matrix)
+
+      type(TYPE(kind=KIND)            :: transpose(N,M)
+      type(TYPE(kind=KIND),intent(in) :: matrix(M,N)
+
+
+
+
+

Characteristics#

+
    +
  • matrix is an array of any type with a rank of two.

  • +
  • The result will be the same type and kind as matrix and the +reversed shape of the input array

  • +
+
+
+

Description#

+

transpose(3) transposes an array of rank two.

+

An array is transposed by interchanging the rows and columns of the +given matrix. That is, element (i,j) of the result has the value of +element (j,i) of the input for all (i,j).

+
+
+

Options#

+
    +
  • +
    matrix

    The array to transpose

    +
    +
    +
  • +
+
+
+

Result#

+

The transpose of the input array. The result has the same type as +matrix, and has shape [ m, n ] if matrix has shape [ n, m ].

+
+
+

Examples#

+

Sample program:

+
program demo_transpose
+implicit none
+integer,save :: xx(3,5)= reshape([&
+    1,  2,  3,  4,  5,    &
+   10, 20, 30, 40, 50,    &
+   11, 22, 33, 44, -1055  &
+ ],shape(xx),order=[2,1])
+
+call print_matrix_int('xx array:',xx)
+call print_matrix_int('xx array transposed:',transpose(xx))
+
+contains
+
+subroutine print_matrix_int(title,arr)
+! print small 2d integer arrays in row-column format
+implicit none
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:,:)
+integer                      :: i
+character(len=:),allocatable :: biggest
+   write(*,*)trim(title)  ! print title
+   biggest='           '  ! make buffer to write integer into
+   ! find how many characters to use for integers
+   write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+   ! use this format to write a row
+   biggest='(" > [",*(i'//trim(biggest)//':,","))'
+   ! print one row of array at a time
+   do i=1,size(arr,dim=1)
+      write(*,fmt=biggest,advance='no')arr(i,:)
+      write(*,'(" ]")')
+   enddo
+end subroutine print_matrix_int
+
+end program demo_transpose
+
+
+

Results:

+
    xx array:
+    > [     1,     2,     3,     4,     5 ]
+    > [    10,    20,    30,    40,    50 ]
+    > [    11,    22,    33,    44, -1055 ]
+    xx array transposed:
+    > [     1,    10,    11 ]
+    > [     2,    20,    22 ]
+    > [     3,    30,    33 ]
+    > [     4,    40,    44 ]
+    > [     5,    50, -1055 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See also#

+
    +
  • merge(3) - Merge variables

  • +
  • pack(3) - Pack an array into an array of rank one

  • +
  • spread(3) - Add a dimension and replicate data

  • +
  • unpack(3) - Scatter the elements of a vector

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

all#

+
+

Name#

+

all(3) - [ARRAY:REDUCTION] Determines if all the values are true

+
+
+

Synopsis#

+
   result = all(mask [,dim])
+
+
+
     function all(mask ,dim)
+
+      logical(kind=KIND),intent(in) :: mask(..)
+      integer,intent(in),optional   :: dim
+      logical(kind=KIND)            :: all(..)
+
+
+
+
+

Characteristics#

+
    +
  • mask is a logical array

  • +
  • dim is an integer

  • +
  • the result is a logical array if dim is supplied, +otherwise it is a logical scalar. It has the same characteristics +as mask

  • +
+
+
+

Description#

+

all(3) determines if all the values are true in mask in the +array along dimension dim if dim is specified; otherwise all +elements are tested together.

+

This testing type is called a logical conjunction of elements of +mask along dimension dim.

+

The mask is generally a logical expression, allowing for comparing +arrays and many other common operations.

+
+
+

Options#

+
    +
  • +
    mask

    the logical array to be tested for all elements being .true.

    +
    +
    +
  • +
  • +
    dim

    dim indicates the direction through the elements of mask +to group elements for testing.

    +
    +

    dim has a value that lies between one and the rank of mask.

    +
    +

    The corresponding actual argument shall not be an optional dummy +argument.

    +
    +

    If dim is not present all elements are tested and a single +scalar value is returned.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  1. If dim is not present all(mask) is .true. if all elements +of mask are .true.. It also is .true. if mask has zero size; +otherwise, it is .false. .

  2. +
  3. If the rank of mask is one, then all(mask, dim) is equivalent +to all(mask).

  4. +
  5. If the rank of mask is greater than one and dim is present then +all(mask,dim) returns an array with the rank (number of +dimensions) of mask minus 1. The shape is determined from the +shape of mask where the dim dimension is elided. A value is +returned for each set of elements along the dim dimension.

  6. +
+
+
+

Examples#

+

Sample program:

+
program demo_all
+implicit none
+logical,parameter :: T=.true., F=.false.
+logical bool
+  ! basic usage
+   ! is everything true?
+   bool = all([ T,T,T ])
+   bool = all([ T,F,T ])
+   print *, bool
+
+  ! by a dimension
+   ARRAYS: block
+   integer :: a(2,3), b(2,3)
+    ! set everything to one except one value in b
+    a = 1
+    b = 1
+    b(2,2) = 2
+    ! now compare those two arrays
+    print *,'entire array :', all(a ==  b )
+    print *,'compare columns:', all(a ==  b, dim=1)
+    print *,'compare rows:', all(a ==  b, dim=2)
+  end block ARRAYS
+
+end program demo_all
+
+
+

Results:

+
 >  T
+ >  F
+ >  entire array : F
+ >  compare columns: T F T
+ >  compare rows: T F
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

any(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

any#

+
+

Name#

+

any(3) - [ARRAY:REDUCTION] Determines if any of the values in the logical array are .true.

+
+
+

Synopsis#

+
    result = any(mask [,dim])
+
+
+
     function any(mask, dim)
+
+      logical(kind=KIND),intent(in) :: mask(..)
+      integer,intent(in),optional   :: dim
+      logical(kind=KIND)            :: any(..)
+
+
+
+
+

Characteristics#

+
    +
  • mask is a logical array

  • +
  • dim is a scalar integer

  • +
  • the result is a logical array if dim is supplied, +otherwise it is a logical scalar.

  • +
+
+
+

Description#

+

any(3) determines if any of the values in the logical +array mask along dimension dim are .true..

+
+
+

Options#

+
    +
  • +
    mask

    an array of logical expressions or values to be tested in groups +or in total for a .true. value.

    +
    +
    +
  • +
  • +
    dim

    a whole number value that lies between one and rank(mask) that +indicates to return an array of values along the indicated dimension +instead of a scalar answer.

    +
    +
    +
  • +
+
+
+

Result#

+

any(mask) returns a scalar value of type logical where the kind type +parameter is the same as the kind type parameter of mask. If dim +is present, then any(mask, dim) returns an array with the rank of +mask minus 1. The shape is determined from the shape of mask +where the dim dimension is elided.

+
    +
  1. any(mask) is .true. if any element of mask is .true.; +otherwise, it is .false.. It also is .false. if mask has +zero size.

  2. +
  3. If the rank of mask is one, then any(mask, dim) is +equivalent to any(mask). If the rank is greater than one, then +any(mask, dim) is determined by applying any(mask) to the +array sections.

  4. +
+
+
+

Examples#

+

Sample program:

+
program demo_any
+implicit none
+logical,parameter :: T=.true., F=.false.
+integer           :: a(2,3), b(2,3)
+logical           :: bool
+  ! basic usage
+   bool = any([F,F,T,F])
+   print *,bool
+   bool = any([F,F,F,F])
+   print *,bool
+  ! fill two integer arrays with values for testing
+   a = 1
+   b = 1
+   b(:,2) = 2
+   b(:,3) = 3
+  ! using any(3) with logical expressions you can compare two arrays
+  ! in a myriad of ways
+   ! first, print where elements of b are bigger than in a
+   call printl( 'first print b > a             ', b > a         )
+   ! now use any() to test
+   call printl( 'any true values?  any(b > a)  ', any(b > a )   )
+   call printl( 'again by columns? any(b > a,1)', any(b > a, 1) )
+   call printl( 'again by rows?    any(b > a,2)', any(b > a, 2) )
+contains
+! CONVENIENCE ROUTINE. this is not specific to ANY()
+subroutine printl(title,a)
+use, intrinsic :: iso_fortran_env, only : &
+ & stderr=>ERROR_UNIT,&
+ & stdin=>INPUT_UNIT,&
+ & stdout=>OUTPUT_UNIT
+implicit none
+
+!@(#) print small 2d logical scalar, vector, or matrix
+
+character(len=*),parameter   :: all='(*(g0,1x))'
+character(len=*),parameter   :: row='(" > [ ",*(l1:,","))'
+character(len=*),intent(in)  :: title
+logical,intent(in)           :: a(..)
+integer                      :: i
+   write(*,*)
+   write(*,all,advance='no')trim(title),&
+    & ' : shape=',shape(a),',rank=',rank(a),',size=',size(a)
+   ! get size and shape of input
+   select rank(a)
+   rank (0); write(*,'(a)')'(a scalar)'
+      write(*,fmt=row,advance='no')a
+      write(*,'(" ]")')
+   rank (1); write(*,'(a)')'(a vector)'
+      do i=1,size(a)
+         write(*,fmt=row,advance='no')a(i)
+         write(*,'(" ]")')
+      enddo
+   rank (2); write(*,'(a)')'(a matrix) '
+      do i=1,size(a,dim=1)
+         write(*,fmt=row,advance='no')a(i,:)
+         write(*,'(" ]")')
+      enddo
+   rank default
+      write(stderr,*)'*printl* did not expect rank=', rank(a), &
+       & 'shape=', shape(a),'size=',size(a)
+      stop '*printl* unexpected rank'
+   end select
+
+end subroutine printl
+
+end program demo_any
+
+
+

Results:

+
 >  T
+ >  F
+ >
+ > first print b > a : shape=23,rank=2,size=6(a matrix)
+ >  > [ F,T,T ]
+ >  > [ F,T,T ]
+ >
+ > any true values?  any(b > a) : shape=,rank=0,size=1(a scalar)
+ >  > [ T ]
+ >
+ > again by columns? any(b > a,1) : shape=3,rank=1,size=3(a vector)
+ >  > [ F ]
+ >  > [ T ]
+ >  > [ T ]
+ >
+ > again by rows?    any(b > a,2) : shape=2,rank=1,size=2(a vector)
+ >  > [ T ]
+ >  > [ T ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

all(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

count#

+
+

Name#

+

count(3) - [ARRAY:REDUCTION] Count true values in an array

+
+
+

Synopsis#

+
    result = count(mask [,dim] [,kind] )
+
+
+
     integer(kind=KIND) function count(mask, dim, KIND )
+
+      logical(kind=**),intent(in) :: mask(..)
+      integer(kind=**),intent(in),optional :: dim
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • mask is a logical array of any shape and kind.

  • +
  • If dim is present, the result is an array with the specified rank +removed.

  • +
  • KIND is a scalar integer constant expression valid as an integer kind

  • +
  • The return value is of default integer type unless kind is specified +to declare the kind of the result.

  • +
+
+
+

Description#

+

count(3) counts the number of .true. elements in a logical +mask, or, if the dim argument is supplied, counts the number +of elements along each row of the array in the dim direction. If +the array has zero size or all of the elements of mask are false, +then the result is 0.

+
+
+

Options#

+
    +
  • +
    mask

    an array to count the number of .true. values in

    +
    +
    +
  • +
  • +
    dim

    specifies to remove this dimension from the result and produce an +array of counts of .true. values along the removed dimension. +If not present, the result is a scalar count of the true elements in mask +the value must be in the range 1 <= dim <= n, where n is the +rank(number of dimensions) of mask.

    +
    +
    +

    The corresponding actual argument shall not be an optional dummy +argument, a disassociated pointer, or an unallocated allocatable.

    +
  • +
  • +
    kind

    An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is the number of .true. values in mask if dim +is not present.

+

If dim is present, the result is an array with a rank one less +than the rank of the input array mask, and a size corresponding +to the shape of array with the dim dimension removed, with the +remaining elements containing the number of .true. elements along the +removed dimension.

+
+
+

Examples#

+

Sample program:

+
   program demo_count
+   implicit none
+   character(len=*),parameter :: ints='(*(i2,1x))'
+   ! two arrays and a mask all with the same shape
+   integer, dimension(2,3) :: a, b
+   logical, dimension(2,3) :: mymask
+   integer :: i
+   integer :: c(2,3,4)
+
+   print *,'the numeric arrays we will compare'
+   a = reshape( [ 1, 2, 3, 4, 5, 6 ], [ 2, 3 ])
+   b = reshape( [ 0, 7, 3, 4, 5, 8 ], [ 2, 3 ])
+   c = reshape( [( i,i=1,24)], [ 2, 3 ,4])
+   print '(3i3)', a(1,:)
+   print '(3i3)', a(2,:)
+   print *
+   print '(3i3)', b(1,:)
+   print '(3i3)', b(2,:)
+   !
+   ! basic calls
+   print *, 'count a few basic things creating a mask from an expression'
+   print *, 'count a>b',count(a>b)
+   print *, 'count b<a',count(a<b)
+   print *, 'count b==a',count(a==b)
+   print *, 'check sum = ',count(a>b) + &
+                         & count(a<b) + &
+                         & count(a==b).eq.size(a)
+   !
+   ! The common usage is just getting a count, but if you want
+   ! to specify the DIM argument and get back reduced arrays
+   ! of counts this is easier to visualize if we look at a mask.
+   print *, 'make a mask identifying unequal elements ...'
+   mymask = a.ne.b
+   print *, 'the mask generated from a.ne.b'
+   print '(3l3)', mymask(1,:)
+   print '(3l3)', mymask(2,:)
+   !
+   print *,'count total and along rows and columns ...'
+   !
+   print '(a)', 'number of elements not equal'
+   print '(a)', '(ie. total true elements in the mask)'
+   print '(3i3)', count(mymask)
+   !
+   print '(a)', 'count of elements not equal in each column'
+   print '(a)', '(ie. total true elements in each column)'
+   print '(3i3)', count(mymask, dim=1)
+   !
+   print '(a)', 'count of elements not equal in each row'
+   print '(a)', '(ie. total true elements in each row)'
+   print '(3i3)', count(mymask, dim=2)
+   !
+   ! working with rank=3 ...
+   print *, 'lets try this with c(2,3,4)'
+   print *,'  taking the result of the modulo   '
+   print *,'   z=1      z=2      z=3      z=4   '
+   print *,'  1 3 0 || 2 4 1 || 3 0 2 || 4 1 3 |'
+   print *,'  2 4 1 || 3 0 2 || 4 1 3 || 0 2 4 |'
+   print *,'                                    '
+   print *,'  would result in the mask ..       '
+   print *,'  F F T || F F F || F T F || F F F |'
+   print *,'  F F F || F T F || F F F || T F F |'
+   print *,'                                    '
+   print *,' the total number of .true.values is'
+   print ints, count(modulo(c,5).eq.0)
+   call printi('counting up along a row and removing rows',&
+   count(modulo(c,5).eq.0,dim=1))
+   call printi('counting up along a column and removing columns',&
+   count(modulo(c,5).eq.0,dim=2))
+   call printi('counting up along a depth and removing depths',&
+   count(modulo(c,5).eq.0,dim=3))
+   !
+   contains
+   !
+   ! CONVENIENCE ROUTINE FOR PRINTING SMALL INTEGER MATRICES
+   subroutine printi(title,arr)
+   implicit none
+   !
+   !@(#) print small 2d integer arrays in row-column format
+   !
+   character(len=*),parameter :: all='(*(g0,1x))' ! a handy format
+   character(len=*),intent(in)  :: title
+   integer,intent(in)           :: arr(:,:)
+   integer                      :: i
+   character(len=:),allocatable :: biggest
+      !
+      print all
+      print all, trim(title),':(',shape(arr),')'  ! print title
+      biggest='           '  ! make buffer to write integer into
+      ! find how many characters to use for integers
+      write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+      ! use this format to write a row
+      biggest='(" > [",*(i'//trim(biggest)//':,","))'
+      ! print one row of array at a time
+      do i=1,size(arr,dim=1)
+         write(*,fmt=biggest,advance='no')arr(i,:)
+         write(*,'(" ]")')
+      enddo
+      !
+   end subroutine printi
+   end program demo_count
+
+
+

Results:

+
 >   the numeric arrays we will compare
+ >    1  3  5
+ >    2  4  6
+ >
+ >    0  3  5
+ >    7  4  8
+ >   count a few basic things creating a mask from an expression
+ >   count a>b           1
+ >   count b<a           2
+ >   count b==a           3
+ >   check sum =  T
+ >   make a mask identifying unequal elements ...
+ >   the mask generated from a.ne.b
+ >    T  F  F
+ >    T  F  T
+ >   count total and along rows and columns ...
+ >  number of elements not equal
+ >  (ie. total true elements in the mask)
+ >    3
+ >  count of elements not equal in each column
+ >  (ie. total true elements in each column)
+ >    2  0  1
+ >  count of elements not equal in each row
+ >  (ie. total true elements in each row)
+ >    1  2
+ >   lets try this with c(2,3,4)
+ >     taking the result of the modulo
+ >      z=1      z=2      z=3      z=4
+ >     1 3 0 || 2 4 1 || 3 0 2 || 4 1 3 |
+ >     2 4 1 || 3 0 2 || 4 1 3 || 0 2 4 |
+ >
+ >     would result in the mask ..
+ >     F F T || F F F || F T F || F F F |
+ >     F F F || F T F || F F F || T F F |
+ >
+ >    the total number of .true.values is
+ >   4
+ >
+ >  counting up along a row and removing rows :( 3 4 )
+ >   > [ 0, 0, 0, 1 ]
+ >   > [ 0, 1, 1, 0 ]
+ >   > [ 1, 0, 0, 0 ]
+ >
+ >  counting up along a column and removing columns :( 2 4 )
+ >   > [ 1, 0, 1, 0 ]
+ >   > [ 0, 1, 0, 1 ]
+ >
+ >  counting up along a depth and removing depths :( 2 3 )
+ >   > [ 0, 1, 1 ]
+ >   > [ 1, 1, 0 ]
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument - Fortran 2003

+
+
+

See Also#

+

any(3), +all(3), +sum(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

maxval#

+
+

Name#

+

maxval(3) - [ARRAY:REDUCTION] Determines the maximum value in an array or row

+
+
+

Synopsis#

+
    result = maxval(array [,mask]) | maxval(array [,dim] [,mask])
+
+
+
     NUMERIC function maxval(array ,dim, mask)
+
+      NUMERIC,intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • NUMERIC designates any numeric type and kind.

  • +
+
+
+

Description#

+

maxval(3) determines the maximum value of the elements in an +array value, or, if the dim argument is supplied, determines the +maximum value along each row of the array in the dim direction. If +mask is present, only the elements for which mask is .true. +are considered. If the array has zero size, or all of the elements of +mask are .false., then the result is the most negative number +of the type and kind of array if array is numeric, or a string +of nulls if array is of character type.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer, real, or character.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar of type integer, with a value between +one and the rank of array, inclusive. It may not be an optional +dummy argument.

    +
    +
    +
  • +
  • +
    mask

    (Optional) Shall be an array of type logical, and conformable with +array.

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, or if array has a rank of one, the result is a scalar. +If dim is present, the result is an array with a rank one less than the +rank of array, and a size corresponding to the size of array with the +dim dimension removed. In all cases, the result is of the same type and +kind as array.

+
+
+

Examples#

+

sample program:

+
program demo_maxval
+implicit none
+integer,save :: ints(3,5)= reshape([&
+   1,  2,  3,  4,  5, &
+  10, 20, 30, 40, 50, &
+  11, 22, 33, 44, 55  &
+],shape(ints),order=[2,1])
+
+   write(*,*) maxval(ints)
+   write(*,*) maxval(ints,dim=1)
+   write(*,*) maxval(ints,dim=2)
+   ! find biggest number less than 30 with mask
+   write(*,*) maxval(ints,mask=ints.lt.30)
+end program demo_maxval
+
+
+

Results:

+
 >  55
+ >  11     22     33     44     55
+ >   5     50     55
+ >  22
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

maxloc(3), +minloc(3), +minval(3), +max(3), +min(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

minval#

+
+

Name#

+

minval(3) - [ARRAY:REDUCTION] Minimum value of an array

+
+
+

Synopsis#

+
    result = minval(array, [mask]) | minval(array [,dim] [,mask])
+
+
+
     NUMERIC function minval(array, dim, mask)
+
+      NUMERIC,intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • NUMERIC is any numeric type and kind.

  • +
+
+
+

Description#

+

minval(3) determines the minimum value of the elements in an array +value, or, if the dim argument is supplied, determines the minimum +value along each row of the array in the dim direction.

+

If mask is present, only the elements for which mask is +.true. are considered.

+

If the array has zero size, or all of the elements of mask +are .false., then the result is huge(array) if array is +numeric, or a string of char(len=255) characters if array +is of character type.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer, real, or character.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar of type integer, with a value between +one and the rank of ARRAY, inclusive. It may not be an optional +dummy argument.

    +
    +
    +
  • +
  • +
    mask

    Shall be an array of type logical, and conformable with array.

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, or if array has a rank of one, the result is a scalar.

+

If dim is present, the result is an array with a rank one less than the +rank of array, and a size corresponding to the size of array with the +dim dimension removed. In all cases, the result is of the same type and +kind as array.

+
+
+

Examples#

+

sample program:

+
program demo_minval
+implicit none
+integer :: i
+character(len=*),parameter :: g='(3x,*(g0,1x))'
+
+integer,save :: ints(3,5)= reshape([&
+       1,  -2,   3,   4,   5,  &
+      10,  20, -30,  40,  50,  &
+      11,  22,  33, -44,  55  &
+],shape(ints),order=[2,1])
+
+integer,save :: box(3,5,2)
+
+   box(:,:,1)=ints
+   box(:,:,2)=-ints
+
+   write(*,*)'Given the array'
+   write(*,'(1x,*(g4.4,1x))') &
+   & (ints(i,:),new_line('a'),i=1,size(ints,dim=1))
+
+   write(*,*)'What is the smallest element in the array?'
+   write(*,g) minval(ints),'at <',minloc(ints),'>'
+
+   write(*,*)'What is the smallest element in each column?'
+   write(*,g) minval(ints,dim=1)
+
+   write(*,*)'What is the smallest element in each row?'
+   write(*,g) minval(ints,dim=2)
+
+   ! notice the shape of the output has less columns
+   ! than the input in this case
+   write(*,*)'What is the smallest element in each column,'
+   write(*,*)'considering only those elements that are'
+   write(*,*)'greater than zero?'
+   write(*,g) minval(ints, dim=1, mask = ints > 0)
+
+   write(*,*)&
+   & 'if everything is false a zero-sized array is NOT returned'
+   write(*,*) minval(ints, dim=1, mask = .false.)
+   write(*,*)'even for a zero-sized input'
+   write(*,g) minval([integer ::], dim=1, mask = .false.)
+
+   write(*,*)'a scalar answer for everything false is huge()'
+   write(*,g) minval(ints, mask = .false.)
+   write(*,g) minval([integer ::], mask = .false.)
+
+   write(*,*)'some calls with three dimensions'
+   write(*,g) minval(box, mask = .true. )
+   write(*,g) minval(box, dim=1, mask = .true. )
+
+   write(*,g) minval(box, dim=2, mask = .true. )
+   write(*,g) 'shape of answer is ', &
+   & shape(minval(box, dim=2, mask = .true. ))
+
+end program demo_minval
+
+
+

Results:

+
 > Given the array
+ >    1   -2    3    4    5
+ >   10   20  -30   40   50
+ >   11   22   33  -44   55
+ >
+ > What is the smallest element in the array?
+ >   -44 at < 3 4 >
+ > What is the smallest element in each column?
+ >   1 -2 -30 -44 5
+ > What is the smallest element in each row?
+ >   -2 -30 -44
+ > What is the smallest element in each column,
+ > considering only those elements that are
+ > greater than zero?
+ >   1 20 3 4 5
+ > if everything is false a zero-sized array is NOT returned
+ >  2147483647  2147483647  2147483647  2147483647  2147483647
+ > even for a zero-sized input
+ >   2147483647
+ > a scalar answer for everything false is huge()
+ >   2147483647
+ >   2147483647
+ > some calls with three dimensions
+ >   -55
+ >   1 -2 -30 -44 5 -11 -22 -33 -40 -55
+ >   -2 -30 -44 -5 -50 -55
+ >   shape of answer is  3 2
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

min(3), +minloc(3) +maxloc(3), +maxval(3), +min(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

product#

+
+

Name#

+

product(3) - [ARRAY:REDUCTION] Product of array elements

+
+
+

Synopsis#

+
    result = product(array [,dim] [,mask])
+
+
+
     NUMERIC function product(array, dim, mask)
+
+      NUMERIC,intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • NUMERIC is any numeric type and kind.

  • +
+
+
+

Description#

+

product(3) multiplies together all the selected elements of array, +or along dimension dim if the corresponding element in mask +is .true..

+

If dim is absent, a scalar with the product of all elements in array is +returned. (Note a zero-sized array returns 1).

+

When dim is present, If the masked array has a dimension of one +(ie. is a vector) the result is a scalar. Otherwise, an array of rank +n-1, where n equals the rank of array, and a shape similar +to that of array with dimension dim dropped is returned.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer, real or complex.

    +
    +
    +
  • +
  • +
    dim

    shall be a scalar of type integer with a value in the +range from 1 to n, where n equals the rank of array.

    +
    +
    +
  • +
  • +
    mask

    shall be of type logical and either be a scalar or an +array of the same shape as array.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as array.

+
+
+

Examples#

+

Sample program:

+
program demo_product
+implicit none
+character(len=*),parameter :: all='(*(g0,1x))' ! a handy format
+character(len=1),parameter :: nl=new_line('a')
+
+NO_DIM: block
+!    If DIM is not specified, the result is the product of all the
+!    selected array elements.
+integer :: i,n, p1, p2
+integer,allocatable :: array(:)
+   ! all elements are selected by default
+   do n=1,10
+      print all, 'factorial of ',n,' is ', product([(real(i),i=1,n)])
+   enddo
+
+   ! using a mask
+   array=[10,12,13,15,20,25,30]
+   p1=product(array, mask=mod(array, 2)==1) ! only odd elements
+   p2=product(array, mask=mod(array, 2)/=1) ! only even elements
+   print all, nl,'product of all elements',product(array) ! all elements
+   print all, ' odd * even =',nl,p1,'*',p2,'=',p1*p2
+
+   ! NOTE: If ARRAY is a zero-sized array, the result is equal to one
+   print all
+   print all, 'zero-sized array=>',product([integer :: ])
+   ! NOTE: If nothing in the mask is true, this also results in a null
+   !       array
+   print all, 'all elements have a false mask=>', &
+            & product(array,mask=.false.)
+
+endblock NO_DIM
+
+WITH_DIM: block
+integer :: rect(2,3)
+integer :: box(2,3,4)
+
+!  lets fill a few arrays
+   rect = reshape([ &
+     1, 2, 3,       &
+     4, 5, 6        &
+   ],shape(rect),order=[2,1])
+   call print_matrix_int('rect',rect)
+
+!  Find the product of each column in RECT.
+   print all, 'product of columns=',product(rect, dim = 1)
+
+! Find the product of each row in RECT.
+   print all, 'product of rows=',product(rect, dim = 2)
+
+! now lets try a box
+   box(:,:,1)=rect
+   box(:,:,2)=rect*(+10)
+   box(:,:,3)=rect*(-10)
+   box(:,:,4)=rect*2
+   ! lets look at the values
+   call print_matrix_int('box 1',box(:,:,1))
+   call print_matrix_int('box 2',box(:,:,2))
+   call print_matrix_int('box 3',box(:,:,3))
+   call print_matrix_int('box 4',box(:,:,4))
+
+   ! remember without dim= even a box produces a scalar
+   print all, 'no dim gives a scalar',product(real(box))
+
+   ! only one plane has negative values, so note all the "1" values
+   ! for vectors with no elements
+   call print_matrix_int('negative values', &
+   & product(box,mask=box < 0,dim=1))
+
+!   If DIM is specified and ARRAY has rank greater than one, the
+!   result is a new array in which dimension DIM has been eliminated.
+
+   ! pick a dimension to multiply though
+   call print_matrix_int('dim=1',product(box,dim=1))
+
+   call print_matrix_int('dim=2',product(box,dim=2))
+
+   call print_matrix_int('dim=3',product(box,dim=3))
+
+endblock WITH_DIM
+
+contains
+
+   subroutine print_matrix_int(title,arr)
+   implicit none
+
+   !@(#) print small 2d integer arrays in row-column format
+
+   character(len=*),intent(in)  :: title
+   integer,intent(in)           :: arr(:,:)
+   integer                      :: i
+   character(len=:),allocatable :: biggest
+
+      print all
+      print all, trim(title),':(',shape(arr),')'  ! print title
+      biggest='           '  ! make buffer to write integer into
+      ! find how many characters to use for integers
+      write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+      ! use this format to write a row
+      biggest='(" > [",*(i'//trim(biggest)//':,","))'
+      ! print one row of array at a time
+      do i=1,size(arr,dim=1)
+         write(*,fmt=biggest,advance='no')arr(i,:)
+         write(*,'(" ]")')
+      enddo
+
+   end subroutine print_matrix_int
+
+end program demo_product
+
+
+

Results:

+
factorial of  1  is  1.000000
+factorial of  2  is  2.000000
+factorial of  3  is  6.000000
+factorial of  4  is  24.00000
+factorial of  5  is  120.0000
+factorial of  6  is  720.0000
+factorial of  7  is  5040.000
+factorial of  8  is  40320.00
+factorial of  9  is  362880.0
+factorial of  10  is  3628800.
+
+ product of all elements 351000000
+ odd * even =
+ 4875 * 72000 = 351000000
+
+zero-sized array=> 1
+all elements have a false mask=> 1
+
+rect :( 2 3 )
+ > [  1,  2,  3 ]
+ > [  4,  5,  6 ]
+product of columns= 4 10 18
+product of rows= 6 120
+
+box 1 :( 2 3 )
+ > [  1,  2,  3 ]
+ > [  4,  5,  6 ]
+
+box 2 :( 2 3 )
+ > [  10,  20,  30 ]
+ > [  40,  50,  60 ]
+
+box 3 :( 2 3 )
+ > [ -10, -20, -30 ]
+ > [ -40, -50, -60 ]
+
+box 4 :( 2 3 )
+ > [   2,   4,   6 ]
+ > [   8,  10,  12 ]
+no dim gives a scalar .1719927E+26
+
+negative values :( 3 4 )
+ > [     1,     1,   400,     1 ]
+ > [     1,     1,  1000,     1 ]
+ > [     1,     1,  1800,     1 ]
+
+dim=1 :( 3 4 )
+ > [     4,   400,   400,    16 ]
+ > [    10,  1000,  1000,    40 ]
+ > [    18,  1800,  1800,    72 ]
+
+dim=2 :( 2 4 )
+ > [       6,    6000,   -6000,      48 ]
+ > [     120,  120000, -120000,     960 ]
+
+dim=3 :( 2 3 )
+ > [    -200,   -3200,  -16200 ]
+ > [  -51200, -125000, -259200 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

sum(3), note that an element by element multiplication is done +directly using the star character.

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

sum#

+
+

Name#

+

sum(3) - [ARRAY:REDUCTION] Sum the elements of an array

+
+
+

Synopsis#

+
   result = sum(array [,dim[,mask]] | [mask] )
+
+
+
     TYPE(kind=KIND) function sum(array, dim, mask)
+
+      TYPE(kind=KIND),intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • array may be of any numeric type - integer, real or complex.

  • +
  • dim is an integer

  • +
  • mask is logical and conformable with array.

  • +
  • The result is of the same type and kind as array. It is scalar +if dim is not present or array is a vector, else it is an array.

  • +
+
+
+

Description#

+

sum(3) adds the elements of array.

+

When only array is specified all elements are summed, but groups +of sums may be returned along the dimension specified by dim +and/or elements to add may be selected by a logical mask.

+

No method is designated for how the sum is conducted, so whether or not +accumulated error is compensated for is processor-dependent.

+
+
+

Options#

+
    +
  • +
    array

    an array containing the elements to add

    +
    +
    +
  • +
  • +
    dim

    a value in the range from 1 to n, where n equals the rank (the number +of dimensions) of array. dim designates the dimension +along which to create sums. When absent a scalar sum of the elements +optionally selected by mask is returned.

    +
    +
    +
  • +
  • +
    mask

    an array of the same shape as array that designates +which elements to add. If absent all elements are used in the sum(s).

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, a scalar with the sum of all selected elements +in array is returned. Otherwise, an array of rank n-1, where n +equals the rank of array, and a shape similar to that of array +with dimension dim dropped is returned. Since a vector has a rank +of one, the result is a scalar (if n==1, n-1 is zero; and a rank of +zero means a scalar).

+
+
+

Examples#

+

Sample program:

+
program demo_sum
+implicit none
+integer :: vector(5) , matrix(3,4), box(5,6,7)
+
+   vector = [ 1, 2, -3, 4, 5 ]
+
+   matrix(1,:)=[  -1,   2,    -3,   4    ]
+   matrix(2,:)=[  10,   -20,  30,   -40  ]
+   matrix(3,:)=[  100,  200, -300,  400  ]
+
+   box=11
+
+  ! basics
+   print *, 'sum all elements:',sum(vector)
+   print *, 'real :',sum([11.0,-5.0,20.0])
+   print *, 'complex :',sum([(1.1,-3.3),(4.0,5.0),(8.0,-6.0)])
+  ! with MASK option
+   print *, 'sum odd elements:',sum(vector, mask=mod(vector, 2)==1)
+   print *, 'sum positive values:', sum(vector, mask=vector>0)
+
+   call printi('the input array', matrix )
+   call printi('sum of all elements in matrix', sum(matrix) )
+   call printi('sum of positive elements', sum(matrix,matrix>=0) )
+  ! along dimensions
+   call printi('sum along rows', sum(matrix,dim=1) )
+   call printi('sum along columns', sum(matrix,dim=2) )
+   call printi('sum of a vector is always a scalar', sum(vector,dim=1) )
+   call printi('sum of a volume by row', sum(box,dim=1) )
+   call printi('sum of a volume by column', sum(box,dim=2) )
+   call printi('sum of a volume by depth', sum(box,dim=3) )
+
+contains
+! CONVENIENCE ROUTINE; NOT DIRECTLY CONNECTED TO SPREAD(3)
+subroutine printi(title,a)
+use, intrinsic :: iso_fortran_env, only : stderr=>ERROR_UNIT,&
+ & stdin=>INPUT_UNIT, stdout=>OUTPUT_UNIT
+implicit none
+
+!@(#) print small 2d integer scalar, vector, matrix in row-column format
+
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: a(..)
+
+character(len=*),parameter   :: all='(" ",*(g0,1x))'
+character(len=20)            :: row
+integer,allocatable          :: b(:,:)
+integer                      :: i
+   write(*,all,advance='no')trim(title)
+   ! copy everything to a matrix to keep code simple
+   select rank(a)
+   rank (0); write(*,'(a)')' (a scalar)'; b=reshape([a],[1,1])
+   rank (1); write(*,'(a)')' (a vector)'; b=reshape(a,[size(a),1])
+   rank (2); write(*,'(a)')' (a matrix)'; b=a
+   rank default; stop '*printi* unexpected rank'
+   end select
+   ! find how many characters to use for integers
+   write(row,'(i0)')ceiling(log10(real(maxval(abs(b)))))+2
+   ! use this format to write a row
+   row='(" > [",*(i'//trim(row)//':,","))'
+   do i=1,size(b,dim=1)
+      write(*,fmt=row,advance='no')b(i,:)
+      write(*,'(" ]")')
+   enddo
+   write(*,all) '>shape=',shape(a),',rank=',rank(a),',size=',size(a)
+   write(*,*)
+end subroutine printi
+end program demo_sum
+
+
+

Results:

+
    sum all elements:           9
+    real :   26.00000
+    complex : (13.10000,-4.300000)
+    sum odd elements:           6
+    sum positive values:          12
+    the input array  (a matrix)
+    > [   -1,    2,   -3,    4 ]
+    > [   10,  -20,   30,  -40 ]
+    > [  100,  200, -300,  400 ]
+    >shape= 3 4 ,rank= 2 ,size= 12
+
+    sum of all elements in matrix  (a scalar)
+    > [  382 ]
+    >shape= ,rank= 0 ,size= 1
+
+    sum of positive elements  (a scalar)
+    > [  746 ]
+    >shape= ,rank= 0 ,size= 1
+
+    sum along rows  (a vector)
+    > [  109 ]
+    > [  182 ]
+    > [ -273 ]
+    > [  364 ]
+    >shape= 4 ,rank= 1 ,size= 4
+
+    sum along columns  (a vector)
+    > [    2 ]
+    > [  -20 ]
+    > [  400 ]
+    >shape= 3 ,rank= 1 ,size= 3
+
+    sum of a vector is always a scalar  (a scalar)
+    > [  9 ]
+    >shape= ,rank= 0 ,size= 1
+
+    sum of a volume by row  (a matrix)
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    > [  55,  55,  55,  55,  55,  55,  55 ]
+    >shape= 6 7 ,rank= 2 ,size= 42
+
+    sum of a volume by column  (a matrix)
+    > [  66,  66,  66,  66,  66,  66,  66 ]
+    > [  66,  66,  66,  66,  66,  66,  66 ]
+    > [  66,  66,  66,  66,  66,  66,  66 ]
+    > [  66,  66,  66,  66,  66,  66,  66 ]
+    > [  66,  66,  66,  66,  66,  66,  66 ]
+    >shape= 5 7 ,rank= 2 ,size= 35
+
+    sum of a volume by depth  (a matrix)
+    > [  77,  77,  77,  77,  77,  77 ]
+    > [  77,  77,  77,  77,  77,  77 ]
+    > [  77,  77,  77,  77,  77,  77 ]
+    > [  77,  77,  77,  77,  77,  77 ]
+    > [  77,  77,  77,  77,  77,  77 ]
+    >shape= 5 6 ,rank= 2 ,size= 30
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • all(3) - Determines if all the values are true

  • +
  • any(3) - Determines if any of the values in the logical array are true.

  • +
  • count(3) - Count true values in an array

  • +
  • maxval(3) - Determines the maximum value in an array

  • +
  • minval(3) - Minimum value of an array

  • +
  • product(3) - Product of array elements

  • +
  • merge(3) - Merge variables

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

reshape#

+
+

Name#

+

reshape(3) - [ARRAY:RESHAPE] Function to reshape an array

+
+
+

Synopsis#

+
    result = reshape( source, shape [,pad] [,order] )
+
+
+
     type(TYPE(kind=KIND) function reshape
+
+      type(TYPE(kind=KIND),intent(in)          :: source(..)
+      integer(kind=**),intent(in)              :: shape(:)
+      type(TYPE(kind=KIND),intent(in),optional :: pad(..)
+      integer(kind=**),intent(in),optional     :: order(:)
+
+
+
+
+

Characteristics#

+
    +
  • source is an array of any type

  • +
  • shape defines a Fortran shape and therefore an integer vector +(of rank one) of constant size of up to 16 non-negative values.

  • +
  • pad is the same type as source

  • +
  • order is the same shape as shape

  • +
  • The result is an array of shape shape with the same type as source.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

reshape constructs an array of arbitrary shape shape using the elements +from source and possibly pad to fill it.

+

If necessary, the new array may be padded with elements from pad +or permuted as defined by order.

+

Among many other uses, reshape can be used to reorder a Fortran array +to match C array ordering before the array is passed from Fortran to a +C procedure.

+
+
+

Options#

+
    +
  • +
    source

    an array containing the elements to be copied to the result. +there must be enough elements in the source to fill the new shape +if pad is omitted or has size zero. Expressed in Fortran …

    +
    +
    +
  • +
+
   if(.not.present(pad))then
+      if(size(source) < product(shape))then
+        stop 'not enough elements in the old array to fill the new one'
+      endif
+   endif
+
+
+
    +
  • +
    shape

    This is the shape of the new array being generated. +Being by definition a shape; all elements are either positive integers +or zero, the size but be 1 or greater, it may have up to 16 elements +but must be of constant fixed size and rank one.

    +
    +
    +
  • +
  • +
    pad

    used to fill in extra values if the result array is larger than source. +It will be used repeatedly after all the elements of source have been +placed in the result until the result has all elements assigned.

    +
    +

    If it is absent or is a zero-sized array, you can only make +source into another array of the same size as source or smaller.

    +
    +
    +
  • +
  • +
    order

    used to insert elements in the result in an order other +than the normal Fortran array element order, in which the first dimension +varies fastest.

    +
    +

    By definition of ranks the values have to be a permutation of the numbers +from 1 to n, where n is the rank of shape.

    +
    +

    the elements of source and pad are placed into the result in order; +changing the left-most rank most rapidly by default. To change the order by +which the elements are placed in the result use order.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is an array of shape shape with the same type and type +parameters as source. It is first filled with the values of elements +of source, with the remainder filled with repeated copies of pad +until all elements are filled. The new array may be smaller than +source.

+
+
+

Examples#

+

Sample program:

+
program demo_reshape
+implicit none
+! notice the use of "shape(box)" on the RHS
+integer :: box(3,4)=reshape([1,2,3,4,5,6,7,8,9,10,11,12],shape(box))
+integer,allocatable :: v(:,:)
+integer :: rc(2)
+   ! basics0
+    ! what is the current shape of the array?
+    call printi('shape of box is ',box)
+    ! change the shape
+    call printi('reshaped ',reshape(box,[2,6]))
+    call printi('reshaped ',reshape(box,[4,3]))
+
+   ! fill in row column order using order
+    v=reshape([1,2,3,4,10,20,30,40,100,200,300,400],[1,12])
+    call printi('here is some data to shape',v)
+    call printi('normally fills columns first ',reshape([v],[3,4]))
+    call printi('fill rows first', reshape([v],[3,4],order=[2,1]))
+
+    ! if we take the data and put in back in filling
+    ! rows first instead of columns, and flipping the
+    ! height and width of the box we not only fill in
+    ! a vector using row-column order we actually
+    ! transpose it.
+    rc(2:1:-1)=shape(box)
+    ! copy the data in changing column number fastest
+    v=reshape(box,rc,order=[2,1])
+    call printi('reshaped and reordered',v)
+    ! of course we could have just done a transpose
+    call printi('transposed',transpose(box))
+
+   ! making the result bigger than source using pad
+    v=reshape(box,rc*2,pad=[-1,-2,-3],order=[2,1])
+    call printi('bigger and padded and reordered',v)
+contains
+
+subroutine printi(title,arr)
+implicit none
+
+!@(#) print small 2d integer arrays in row-column format
+
+character(len=*),parameter :: all='(*(g0,1x))' ! a handy format
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:,:)
+integer                      :: i
+character(len=:),allocatable :: biggest
+
+   print all
+   print all, trim(title),':(',shape(arr),')'  ! print title
+   biggest='           '  ! make buffer to write integer into
+   ! find how many characters to use for integers
+   write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+   ! use this format to write a row
+   biggest='(" > [",*(i'//trim(biggest)//':,","))'
+   ! print one row of array at a time
+   do i=1,size(arr,dim=1)
+      write(*,fmt=biggest,advance='no')arr(i,:)
+      write(*,'(" ]")')
+   enddo
+
+end subroutine printi
+
+end program demo_reshape
+
+
+

Results:

+
   shape of box is :( 3 4 )
+    > [   1,   4,   7,  10 ]
+    > [   2,   5,   8,  11 ]
+    > [   3,   6,   9,  12 ]
+
+   reshaped :( 2 6 )
+    > [   1,   3,   5,   7,   9,  11 ]
+    > [   2,   4,   6,   8,  10,  12 ]
+
+   reshaped :( 4 3 )
+    > [   1,   5,   9 ]
+    > [   2,   6,  10 ]
+    > [   3,   7,  11 ]
+    > [   4,   8,  12 ]
+
+   here is some data to shape :( 1 12 )
+    > [   1,   2,   3,   4,  10,  20,  30,  40, 100, 200, 300, 400 ]
+
+   normally fills columns first :( 3 4 )
+    > [    1,    4,   30,  200 ]
+    > [    2,   10,   40,  300 ]
+    > [    3,   20,  100,  400 ]
+
+   fill rows first :( 3 4 )
+    > [    1,    2,    3,    4 ]
+    > [   10,   20,   30,   40 ]
+    > [  100,  200,  300,  400 ]
+
+   reshaped and reordered :( 4 3 )
+    > [   1,   2,   3 ]
+    > [   4,   5,   6 ]
+    > [   7,   8,   9 ]
+    > [  10,  11,  12 ]
+
+   transposed :( 4 3 )
+    > [   1,   2,   3 ]
+    > [   4,   5,   6 ]
+    > [   7,   8,   9 ]
+    > [  10,  11,  12 ]
+
+   bigger and padded and reordered :( 8 6 )
+    > [   1,   2,   3,   4,   5,   6 ]
+    > [   7,   8,   9,  10,  11,  12 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+    > [  -1,  -2,  -3,  -1,  -2,  -3 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

shape(3), +pack(3), +transpose(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/bit/index.html b/learn/intrinsics/bit/index.html new file mode 100644 index 000000000000..9b4e908ccbd2 --- /dev/null +++ b/learn/intrinsics/bit/index.html @@ -0,0 +1,6959 @@ + + + + + + + + + Bit-level inquiry and manipulation — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Bit-level inquiry and manipulation#

+
+

bge#

+
+

Name#

+

bge(3) - [BIT:COMPARE] Bitwise greater than or equal to

+
+
+

Synopsis#

+
    result = bge(i,j)
+
+
+
      elemental logical function bge(i, j)
+
+       integer(kind=**),intent(in) :: i
+       integer(kind=**),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • the integer kind of i and j may not necessarily be +the same. In addition, values may be a BOZ constant with a value +valid for the integer kind available with the most bits on the +current platform.

  • +
  • The return value is of type default logical.

  • +
+
+
+

Description#

+

bge(3) Determines whether one integer is bitwise greater than +or equal to another.

+

The bit-level representation of a value is platform dependent. The +endian-ness of a system and whether the system uses a “two’s complement” +representation of signs can affect the results, for example.

+

A BOZ constant (Binary, Octal, Hexadecimal) does not have a kind +or type of its own, so be aware it is subject to truncation when +transferred to an integer type. The most bits the constant may +contain is limited by the most bits representable by any integer +kind supported by the compilation.

+
+

Bit Sequence Comparison#

+

When bit sequences of unequal length are compared, the shorter sequence +is padded with zero bits on the left to the same length as the longer +sequence (up to the largest number of bits any available integer kind +supports).

+

Bit sequences are compared from left to right, one bit at a time, +until unequal bits are found or until all bits have been compared and +found to be equal.

+

The bits are always evaluated in this order, not necessarily from MSB +to LSB (most significant bit to least significant bit).

+

If unequal bits are found the sequence with zero in the unequal +position is considered to be less than the sequence with one in the +unequal position.

+
+
+
+

Options#

+
    +
  • +
    i

    The value to test if >= j based on the bit representation +of the values.

    +
    +
    +
  • +
  • +
    j

    The value to test i against.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if i is bit-wise greater than j and .false. +otherwise.

+
+
+

Examples#

+

Sample program:

+
program demo_bge
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer            :: i
+integer(kind=int8) :: byte
+integer(kind=int8),allocatable :: arr1(:), arr2(:)
+
+  ! BASIC USAGE
+   write(*,*)'bge(-127,127)=',bge( -127, 127 )
+   ! on (very common) "two's complement" machines that are
+   ! little-endian -127 will be greater than 127
+
+   ! BOZ constants
+   ! BOZ constants are subject to truncation, so make sure
+   ! your values are valid for the integer kind being compared to
+   write(*,*)'bge(b"0001",2)=',bge( b"1", 2)
+
+  ! ELEMENTAL
+   ! an array and scalar
+   write(*, *)'compare array of values [-128, -0, +0, 127] to 127'
+   write(*, *)bge(int([-128, -0, +0, 127], kind=int8), 127_int8)
+
+   ! two arrays
+   write(*, *)'compare two arrays'
+   arr1=int( [ -127, -0, +0,  127], kind=int8 )
+   arr2=int( [  127,  0,  0, -127], kind=int8 )
+   write(*,*)'arr1=',arr1
+   write(*,*)'arr2=',arr2
+   write(*, *)'bge(arr1,arr2)=',bge( arr1, arr2 )
+
+  ! SHOW TESTS AND BITS
+   ! actually looking at the bit patterns should clarify what affect
+   ! signs have ...
+   write(*,*)'Compare some one-byte values to 64.'
+   write(*,*)'Notice that the values are tested as bits not as integers'
+   write(*,*)'so the results are as if values are unsigned integers.'
+   do i=-128,127,32
+      byte=i
+      write(*,'(sp,i0.4,*(1x,1l,1x,b0.8))')i,bge(byte,64_int8),byte
+   enddo
+
+  ! SIGNED ZERO
+   ! are +0 and -0 the same on your platform? When comparing at the
+   ! bit level this is important
+   write(*,'("plus zero=",b0)')  +0
+   write(*,'("minus zero=",b0)') -0
+
+end program demo_bge
+
+
+

Results:

+

How an integer value is represented at the bit level can vary. These +are just the values expected on Today’s most common platforms …

+
    > bge(-127,127)= T
+    > bge(b"0001",2)= F
+    > compare array of values [-128, -0, +0, 127] to 127
+    > T F F T
+    > compare two arrays
+    > arr1= -127    0    0  127
+    > arr2=  127    0    0 -127
+    > bge(arr1,arr2)= T T T F
+    > Compare some one-byte values to 64.
+    > Notice that the values are tested as bits not as integers
+    > so the results are as if values are unsigned integers.
+    > -0128  T 10000000
+    > -0096  T 10100000
+    > -0064  T 11000000
+    > -0032  T 11100000
+    > +0000  F 00000000
+    > +0032  F 00100000
+    > +0064  T 01000000
+    > +0096  T 01100000
+    > plus zero=0
+    > minus zero=0
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bgt(3), +ble(3), +blt(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

bgt#

+
+

Name#

+

bgt(3) - [BIT:COMPARE] Bitwise greater than

+
+
+

Synopsis#

+
    result = bgt(i, j)
+
+
+
      elemental logical function bgt(i, j)
+
+       integer(kind=**),intent(in) :: i
+       integer(kind=**),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i is an integer or a boz-literal-constant.

  • +
  • j is an integer or a boz-literal-constant.

  • +
  • a kind designated as ** may be any supported kind for the type +The integer kind of i and **j** may not necessarily be the same. +kind. In addition, values may be a BOZ constant with a value valid +for the integer kind available with the most bits on the current +platform.

  • +
  • The return value is of type logical and of the default kind.

  • +
+
+
+

Description#

+

bgt determines whether an integer is bitwise greater than another. +Bit-level representations of values are platform-dependent.

+
+
+

Options#

+
    +
  • +
    i

    reference value to compare against

    +
    +
    +
  • +
  • +
    j

    value to compare to i

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type logical and of the default kind. The +result is true if the sequence of bits represented by i is greater +than the sequence of bits represented by j, otherwise the result +is false.

+

Bits are compared from right to left.

+
+
+

Examples#

+

Sample program:

+
program demo_bgt
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer            :: i
+integer(kind=int8) :: byte
+  ! Compare some one-byte values to 64.
+   ! Notice that the values are tested as bits not as integers
+   ! so sign bits in the integer are treated just like any other
+   write(*,'(a)') 'we will compare other values to 64'
+   i=64
+   byte=i
+   write(*,'(sp,i0.4,*(1x,1l,1x,b0.8))')i,bgt(byte,64_int8),byte
+
+   write(*,'(a)') "comparing at the bit level, not as whole numbers."
+   write(*,'(a)') "so pay particular attention to the negative"
+   write(*,'(a)') "values on this two's complement platform ..."
+   do i=-128,127,32
+      byte=i
+      write(*,'(sp,i0.4,*(1x,1l,1x,b0.8))')i,bgt(byte,64_int8),byte
+   enddo
+
+   ! see the BGE() description for an extended description
+   ! of related information
+
+end program demo_bgt
+
+
+

Results:

+
 > we will compare other values to 64
+ > +0064  F 01000000
+ > comparing at the bit level, not as whole numbers.
+ > so pay particular attention to the negative
+ > values on this two's complement platform ...
+ > -0128  T 10000000
+ > -0096  T 10100000
+ > -0064  T 11000000
+ > -0032  T 11100000
+ > +0000  F 00000000
+ > +0032  F 00100000
+ > +0064  F 01000000
+ > +0096  T 01100000
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bge(3), +ble(3), +blt(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ble#

+
+

Name#

+

ble(3) - [BIT:COMPARE] Bitwise less than or equal to

+
+
+

Synopsis#

+
    result = ble(i,j)
+
+
+
     elemental logical function ble(i, j)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i and j may be of any supported integer kind, not +necessarily the same. An exception is that values may be a +BOZ constant with a value valid for the integer kind available with +the most bits on the current platform.

  • +
  • the returned value is a logical scalar of default kind

  • +
+
+
+

Description#

+

ble(3) determines whether an integer is bitwise less than or +equal to another, assuming any shorter value is padded on the left +with zeros to the length of the longer value.

+
+
+

Options#

+
    +
  • +
    i

    the value to compare j to

    +
    +
    +
  • +
  • +
    j

    the value to be tested for being less than or equal to i

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is .true. if any bit in j is less than any bit +in i starting with the rightmost bit and continuing tests leftward.

+
+
+

Examples#

+

Sample program:

+
program demo_ble
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer            :: i
+integer(kind=int8) :: byte
+  ! Compare some one-byte values to 64.
+   ! Notice that the values are tested as bits not as integers
+   ! so sign bits in the integer are treated just like any other
+   do i=-128,127,32
+      byte=i
+      write(*,'(sp,i0.4,*(1x,1l,1x,b0.8))')i,ble(byte,64_int8),byte
+      write(*,'(sp,i0.4,*(4x,b0.8))')64_int8,64_int8
+   enddo
+
+   ! see the BGE() description for an extended description
+   ! of related information
+
+end program demo_ble
+
+
+

Results:

+
   -0128  F 10000000
+   +0064    01000000
+   -0096  F 10100000
+   +0064    01000000
+   -0064  F 11000000
+   +0064    01000000
+   -0032  F 11100000
+   +0064    01000000
+   +0000  T 00000000
+   +0064    01000000
+   +0032  T 00100000
+   +0064    01000000
+   +0064  T 01000000
+   +0064    01000000
+   +0096  F 01100000
+   +0064    01000000
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bge(3), +bgt(3), +blt(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

blt#

+
+

Name#

+

blt(3) - [BIT:COMPARE] Bitwise less than

+
+
+

Synopsis#

+
    result = blt(i,j)
+
+
+
     elemental logical function blt(i, j)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i is an integer of any kind or a BOZ-literal-constant

  • +
  • j is an integer of any kind or a BOZ-literal-constant, not +necessarily the same as i.

  • +
  • the result is of default logical kind

  • +
+

BOZ constants must have a value valid for the integer kind available +with the most bits on the current platform.

+
+
+

Description#

+

blt(3) determines whether an integer is bitwise less than another.

+
+
+

Options#

+
    +
  • +
    i

    Shall be of integer type or a BOZ literal constant.

    +
    +
    +
  • +
  • +
    j

    Shall be of integer type or a BOZ constant.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type logical and of the default kind.

+
+
+

Examples#

+

Sample program:

+
program demo_blt
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer            :: i
+integer(kind=int8) :: byte
+  ! Compare some one-byte values to 64.
+   ! Notice that the values are tested as bits not as integers
+   ! so sign bits in the integer are treated just like any other
+   do i=-128,127,32
+      byte=i
+      write(*,'(sp,i0.4,*(1x,1l,1x,b0.8))')i,blt(byte,64_int8),byte
+   enddo
+  ! BOZ literals
+   write(*,*)blt(z'1000', z'101011010')
+   ! see the BGE() description for an extended description
+   ! of related information
+
+end program demo_blt
+
+
+

Results:

+
   > -0128  F 10000000
+   > -0096  F 10100000
+   > -0064  F 11000000
+   > -0032  F 11100000
+   > +0000  T 00000000
+   > +0032  T 00100000
+   > +0064  F 01000000
+   > +0096  F 01100000
+   > T
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bge(3), +bgt(3), +ble(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

bit_size#

+
+

Name#

+

bit_size(3) - [BIT:INQUIRY] Bit size inquiry function

+
+
+

Synopsis#

+
    result = bit_size(i)
+
+
+
     integer(kind=KIND) function bit_size(i)
+
+      integer(kind=KIND),intent(in) :: i(..)
+
+
+
+
+

Characteristics#

+
    +
  • i shall be of type integer. It may be a scalar or an array.

  • +
  • the value of KIND is any valid value for an integer kind +parameter on the processor.

  • +
  • the return value is a scalar of the same kind as the input value.

  • +
+
+
+

Description#

+

bit_size(3) returns the number of bits (integer precision plus +sign bit) represented by the type of the integer i.

+
+
+

Options#

+
    +
  • +
    i

    An integer value of any kind whose size in bits is to be determined. +Because only the type of the argument is examined, the argument need not +be defined; i can be a scalar or an array, but a scalar representing +just a single element is always returned.

    +
    +
    +
  • +
+
+
+

Result#

+

The number of bits used to represent a value of the type and kind +of i. The result is a integer scalar of the same kind as i.

+
+
+

Examples#

+

Sample program:

+
program demo_bit_size
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+use,intrinsic :: iso_fortran_env, only : integer_kinds
+implicit none
+character(len=*),parameter   :: fmt=&
+& '(a,": bit size is ",i3," which is kind=",i3," on this platform")'
+
+    ! default integer bit size on this platform
+    write(*,fmt) "default", bit_size(0), kind(0)
+
+    write(*,fmt) "int8   ", bit_size(0_int8),   kind(0_int8)
+    write(*,fmt) "int16  ", bit_size(0_int16),  kind(0_int16)
+    write(*,fmt) "int32  ", bit_size(0_int32),  kind(0_int32)
+    write(*,fmt) "int64  ", bit_size(0_int64),  kind(0_int64)
+
+    write(*,'(a,*(i0:,", "))') "The available kinds are ",integer_kinds
+
+end program demo_bit_size
+
+
+

Typical Results:

+
    default: bit size is  32 which is kind=  4 on this platform
+    int8   : bit size is   8 which is kind=  1 on this platform
+    int16  : bit size is  16 which is kind=  2 on this platform
+    int32  : bit size is  32 which is kind=  4 on this platform
+    int64  : bit size is  64 which is kind=  8 on this platform
+    The available kinds are 1, 2, 4, 8, 16
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

btest#

+
+

Name#

+

btest(3) - [BIT:INQUIRY] Tests a bit of an integer value.

+
+
+

Synopsis#

+
    result = btest(i,pos)
+
+
+
     elemental logical function btest(i,pos)
+
+      integer(kind=**),intent(in)  :: i
+      integer(kind=**),intent(in)  :: pos
+
+
+
+
+

Characteristics#

+
    +
  • i is an integer of any kind

  • +
  • pos is a integer of any kind

  • +
  • the result is a default logical

  • +
+
+
+

Description#

+

btest(3) returns logical .true. if the bit at pos in i is +set to 1. Position zero is the right-most bit. Bit position increases +from right to left up to bitsize(i)-1.

+
+
+

Options#

+
    +
  • +
    i

    The integer containing the bit to be tested

    +
    +
    +
  • +
  • +
    pos

    The position of the bit to query. it must be a valid position for the +value i; ie. 0 <= pos <= bit_size(i).

    +
    +
    +
  • +
+
+
+

Result#

+

The result is a logical that has the value .true. if bit position +pos of i has the value 1 and the value .false. if bit +pos of i has the value 0.

+

Positions of bits in the sequence are numbered from right to left, +with the position of the rightmost bit being zero.

+
+
+

Examples#

+

Sample program:

+
program demo_btest
+implicit none
+integer :: i, j, pos, a(2,2)
+logical :: bool
+character(len=*),parameter :: g='(*(g0))'
+
+     i = 32768 + 1024 + 64
+    write(*,'(a,i0,"=>",b32.32,/)')'Looking at the integer: ',i
+
+    ! looking one bit at a time from LOW BIT TO HIGH BIT
+    write(*,g)'from bit 0 to bit ',bit_size(i),'==>'
+    do pos=0,bit_size(i)-1
+        bool = btest(i, pos)
+        write(*,'(l1)',advance='no')bool
+    enddo
+    write(*,*)
+
+    ! a binary format the hard way.
+    ! Note going from bit_size(i) to zero.
+    write(*,*)
+    write(*,g)'so for ',i,' with a bit size of ',bit_size(i)
+    write(*,'(b32.32)')i
+    write(*,g)merge('^','_',[(btest(i,j),j=bit_size(i)-1,0,-1)])
+    write(*,*)
+    write(*,g)'and for ',-i,' with a bit size of ',bit_size(i)
+    write(*,'(b32.32)')-i
+    write(*,g)merge('^','_',[(btest(-i,j),j=bit_size(i)-1,0,-1)])
+
+    ! elemental:
+    !
+    a(1,:)=[ 1, 2 ]
+    a(2,:)=[ 3, 4 ]
+    write(*,*)
+    write(*,'(a,/,*(i2,1x,i2,/))')'given the array a ...',a
+    ! the second bit of all the values in a
+    write(*,'(a,/,*(l2,1x,l2,/))')'the value of btest (a, 2)',btest(a,2)
+    ! bits 1,2,3,4 of the value 2
+    write(*,'(a,/,*(l2,1x,l2,/))')'the value of btest (2, a)',btest(2,a)
+end program demo_btest
+
+
+

Results:

+
  > Looking at the integer: 33856=>11111111111111110111101111000000
+  >
+  > 00000000000000001000010001000000
+  > 11111111111111110111101111000000
+  > 1000010001000000
+  > 11111111111111110111101111000000
+  > from bit 0 to bit 32==>
+  > FFFFFFTFFFTFFFFTFFFFFFFFFFFFFFFF
+  >
+  > so for 33856 with a bit size of 32
+  > 00000000000000001000010001000000
+  > ________________^____^___^______
+  >
+  > and for -33856 with a bit size of 32
+  > 11111111111111110111101111000000
+  > ^^^^^^^^^^^^^^^^_^^^^_^^^^______
+  >
+  > given the array a ...
+  >  1  3
+  >  2  4
+  >
+  > the value of btest (a, 2)
+  >  F  F
+  >  F  T
+  >
+  > the value of btest (2, a)
+  >  T  F
+  >  F  F
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +ibclr(3), +ibits(3), +ibset(3), +iand(3), +ior(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

storage_size#

+
+

Name#

+

storage_size(3) - [BIT:INQUIRY] Storage size in bits

+
+
+

Synopsis#

+
    result = storage_size(a [,KIND] )
+
+
+
     integer(kind=KIND) storage_size(a,KIND)
+
+      type(TYPE(kind=**)) :: a
+      integer,intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • a may be of any type and kind. If it is polymorphic it shall not +be an undefined pointer. If it is unlimited polymorphic or has any +deferred type parameters, it shall not be an unallocated allocatable +variable or a disassociated or undefined pointer.

  • +
  • The kind type parameter of the returned value is that specified by +the value of kind; otherwise, the kind type parameter is that of +default integer type.

  • +
  • The result is an integer scalar of default kind unless kind is +specified, in which case it has the kind specified by kind.

  • +
+
+
+

Description#

+

storage_size(3) returns the storage size of argument a in bits.

+
+
+

Options#

+
    +
  • +
    a

    The entity to determine the storage size of

    +
    +
    +
  • +
  • +
    kind

    a scalar integer constant expression that defines the kind of the +output value.

    +
    +
    +
  • +
+
+
+

Result#

+

The result value is the size expressed in bits for an element of an +array that has the dynamic type and type parameters of a.

+

If the type and type parameters are such that storage association +applies, the result is consistent with the named constants +defined in the intrinsic module ISO_FORTRAN_ENV.

+

NOTE1

+

An array element might take “type” more bits to store than an isolated +scalar, since any hardware-imposed alignment requirements for array +elements might not apply to a simple scalar variable.

+

NOTE2

+

This is intended to be the size in memory that an object takes when it +is stored; this might differ from the size it takes during expression +handling (which might be the native register size) or when stored in a +file. If an object is never stored in memory but only in a register, +this function nonetheless returns the size it would take if it were +stored in memory.

+
+
+

Examples#

+

Sample program

+
program demo_storage_size
+implicit none
+
+   ! a default real, integer, and logical are the same storage size
+   write(*,*)'size of integer       ',storage_size(0)
+   write(*,*)'size of real          ',storage_size(0.0)
+   write(*,*)'size of logical       ',storage_size(.true.)
+   write(*,*)'size of complex       ',storage_size((0.0,0.0))
+
+   ! note the size of an element of the array, not the storage size of
+   ! the entire array is returned for array arguments
+   write(*,*)'size of integer array ',storage_size([0,1,2,3,4,5,6,7,8,9])
+
+end program demo_storage_size
+
+
+

Results:

+
    size of integer                 32
+    size of real                    32
+    size of logical                 32
+    size of complex                 64
+    size of integer array           32
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

c_sizeof(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

leadz#

+
+

Name#

+

leadz(3) - [BIT:COUNT] Number of leading zero bits of an integer

+
+
+

Synopsis#

+
    result = leadz(i)
+
+
+
     elemental integer function leadz(i)
+
+      integer(kind=**),intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i may be an integer of any kind.

  • +
  • the return value is a default integer type.

  • +
+
+
+

Description#

+

leadz(3) returns the number of leading zero bits of an integer.

+
+
+

Options#

+
    +
  • +
    i

    integer to count the leading zero bits of.

    +
    +
    +
  • +
+
+
+

Result#

+

The number of leading zero bits, taking into account the kind of the +input value. If all the bits of i are zero, the result value is +bit_size(i).

+

The result may also be thought of as bit_size(i)-1-k where k +is the position of the leftmost 1 bit in the input i. Positions +are from 0 to bit-size(), with 0 at the right-most bit.

+
+
+

Examples#

+

Sample program:

+
program demo_leadz
+implicit none
+integer :: value, i
+character(len=80) :: f
+
+  ! make a format statement for writing a value as a bit string
+  write(f,'("(b",i0,".",i0,")")')bit_size(value),bit_size(value)
+
+  ! show output for various integer values
+  value=0
+  do i=-150, 150, 50
+     value=i
+     write (*,'("LEADING ZERO BITS=",i3)',advance='no') leadz(value)
+     write (*,'(" OF VALUE ")',advance='no')
+     write(*,f,advance='no') value
+     write(*,'(*(1x,g0))') "AKA",value
+  enddo
+  ! Notes:
+  ! for two's-complements programming environments a negative non-zero
+  ! integer value will always start with a 1 and a positive value with 0
+  ! as the first bit is the sign bit. Such platforms are very common.
+end program demo_leadz
+
+
+

Results:

+
  LEADING ZERO BITS=  0 OF VALUE 11111111111111111111111101101010 AKA -150
+  LEADING ZERO BITS=  0 OF VALUE 11111111111111111111111110011100 AKA -100
+  LEADING ZERO BITS=  0 OF VALUE 11111111111111111111111111001110 AKA -50
+  LEADING ZERO BITS= 32 OF VALUE 00000000000000000000000000000000 AKA 0
+  LEADING ZERO BITS= 26 OF VALUE 00000000000000000000000000110010 AKA 50
+  LEADING ZERO BITS= 25 OF VALUE 00000000000000000000000001100100 AKA 100
+  LEADING ZERO BITS= 24 OF VALUE 00000000000000000000000010010110 AKA 150
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bit_size(3), +popcnt(3), +poppar(3), +trailz(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

popcnt#

+
+

Name#

+

popcnt(3) - [BIT:COUNT] Number of bits set

+
+
+

Synopsis#

+
    result = popcnt(i)
+
+
+
     elemental integer function popcnt(i)
+
+      integer(kind=KIND), intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i may be an integer of any kind.

  • +
  • The return value is an integer of the default integer kind.

  • +
+
+
+

Description#

+

popcnt(3) returns the number of bits set to one in the binary +representation of an integer.

+
+
+

Options#

+
    +
  • +
    i

    value to count set bits in

    +
    +
    +
  • +
+
+
+

Result#

+

The number of bits set to one in i.

+
+
+

Examples#

+

Sample program:

+
program demo_popcnt
+use, intrinsic :: iso_fortran_env, only : integer_kinds, &
+   & int8, int16, int32, int64
+implicit none
+character(len=*),parameter :: pretty='(b64,1x,i0)'
+  ! basic usage
+   print pretty, 127,     popcnt(127)
+   print pretty, int(b"01010"), popcnt(int(b"01010"))
+
+  ! any kind of an integer can be used
+   print pretty, huge(0_int8),  popcnt(huge(0_int8))
+   print pretty, huge(0_int16), popcnt(huge(0_int16))
+   print pretty, huge(0_int32), popcnt(huge(0_int32))
+   print pretty, huge(0_int64), popcnt(huge(0_int64))
+end program demo_popcnt
+
+
+

Results:

+

Note that on most machines the first bit is the sign bit, and a zero is +used for positive values; but that this is system-dependent. These are +typical values, where the huge(3f) function has set all but the first +bit to 1.

+
 >                                                         1111111 7
+ >                                                            1010 2
+ >                                                         1111111 7
+ >                                                 111111111111111 15
+ >                                 1111111111111111111111111111111 31
+ > 111111111111111111111111111111111111111111111111111111111111111 63
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

There are many procedures that operator or query values at the bit level:

+

poppar(3), +leadz(3), +trailz(3) +atomic_and(3), +atomic_fetch_and(3), +atomic_fetch_or(3), +atomic_fetch_xor(3), +atomic_or(3), +atomic_xor(3), +bge(3), +bgt(3), +bit_size(3), +ble(3), +blt(3), +btest(3), +dshiftl(3), +dshiftr(3), +iall(3), +iand(3), +iany(3), +ibclr(3), +ibits(3), +ibset(3), +ieor(3), +ior(3), +iparity(3), +ishftc(3), +ishft(3), +maskl(3), +maskr(3), +merge_bits(3), +mvbits(3), +not(3), +shifta(3), +shiftl(3), +shiftr(3), +storage_size(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

poppar#

+
+

Name#

+

poppar(3) - [BIT:COUNT] Parity of the number of bits set

+
+
+

Synopsis#

+
    result = poppar(i)
+
+
+
     elemental integer function poppar(i)
+
+      integer(kind=KIND), intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i is an integer of any kind

  • +
  • the return value is a default kind integer

  • +
+
+
+

Description#

+

poppar(3) returns the parity of an integer’s binary representation +(i.e., the parity of the number of bits set).

+

The parity is expressed as

+
    +
  • 0 (zero) if i has an even number of bits set to 1.

  • +
  • 1 (one) if the number of bits set to one 1 is odd,

  • +
+
+
+

Options#

+
    +
  • +
    i

    The value to query for its bit parity

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is equal to 0 if i has an even number of bits +set and 1 if an odd number of bits are set.

+
+
+

Examples#

+

Sample program:

+
program demo_poppar
+use, intrinsic :: iso_fortran_env, only : integer_kinds, &
+   & int8, int16, int32, int64
+implicit none
+character(len=*),parameter :: pretty='(b64,1x,i0)'
+   ! basic usage
+   print pretty, 127,     poppar(127)
+   print pretty, 128,     poppar(128)
+   print pretty, int(b"01010"), poppar(int(b"01010"))
+
+   ! any kind of an integer can be used
+   print pretty, huge(0_int8),  poppar(huge(0_int8))
+   print pretty, huge(0_int16), poppar(huge(0_int16))
+   print pretty, huge(0_int32), poppar(huge(0_int32))
+   print pretty, huge(0_int64), poppar(huge(0_int64))
+end program demo_poppar
+
+
+

Results:

+
 >                                                          1111111 1
+ >                                                         10000000 1
+ >                                                             1010 0
+ >                                  1111111111111111111111111111111 1
+ >                                                          1111111 1
+ >                                                  111111111111111 1
+ >                                  1111111111111111111111111111111 1
+ >  111111111111111111111111111111111111111111111111111111111111111 1
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

There are many procedures that operator or query values at the bit level:

+

popcnt(3), +leadz(3), +trailz(3) +atomic_and(3), +atomic_fetch_and(3), +atomic_fetch_or(3), +atomic_fetch_xor(3), +atomic_or(3), +atomic_xor(3), +bge(3), +bgt(3), +bit_size(3), +ble(3), +blt(3), +btest(3), +dshiftl(3), +dshiftr(3), +iall(3), +iand(3), +iany(3), +ibclr(3), +ibits(3), +ibset(3), +ieor(3), +ior(3), +iparity(3), +ishftc(3), +ishft(3), +maskl(3), +maskr(3), +merge_bits(3), +mvbits(3), +not(3), +shifta(3), +shiftl(3), +shiftr(3), +storage_size(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

trailz#

+
+

Name#

+

trailz(3) - [BIT:COUNT] Number of trailing zero bits of an integer

+
+
+

Synopsis#

+
 result = trailz(i)
+
+
+
  elemental integer function trailz(i)
+
+   integer(kind=**),intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i is an integer of any kind.

  • +
  • the result is an integer of default kind

  • +
+
+
+

Description#

+

trailz(3) returns the number of trailing zero bits of an integer +value.

+
+
+

Options#

+
    +
  • +
    i

    the value to count trailing zero bits in

    +
    +
    +
  • +
+
+
+

Result#

+

The number of trailing rightmost zero bits in an integer value after +the last non-zero bit.

+
       >      right-most non-zero bit
+       >                 V
+       >  |0|0|0|1|1|1|0|1|0|0|0|0|0|0|
+       >  ^               |___________| trailing zero bits
+       >   bit_size(i)
+
+
+

If all the bits of i are zero, the result is the size of the input +value in bits, ie. bit_size(i).

+

The result may also be seen as the position of the rightmost 1 bit +in i, starting with the rightmost bit being zero and counting to +the left.

+
+
+

Examples#

+

Sample program:

+
program demo_trailz
+
+! some common integer kinds
+use, intrinsic :: iso_fortran_env, only : &
+ & integer_kinds, int8, int16, int32, int64
+
+implicit none
+
+! a handy format
+character(len=*),parameter :: &
+ & show = '(1x,"value=",i4,", value(bits)=",b32.32,1x,", trailz=",i3)'
+
+integer(kind=int64) :: bigi
+  ! basics
+   write(*,*)'Note default integer is',bit_size(0),'bits'
+   print  show,  -1, -1,  trailz(-1)
+   print  show,   0,  0,  trailz(0)
+   print  show,   1,  1,  trailz(1)
+   print  show,  96, 96,  trailz(96)
+  ! elemental
+   print *, 'elemental and any integer kind:'
+   bigi=2**5
+   write(*,*) trailz( [ bigi, bigi*256, bigi/2 ] )
+   write(*,'(1x,b64.64)')[ bigi, bigi*256, bigi/2 ]
+
+end program demo_trailz
+
+
+

Results:

+
    Note default integer is          32 bits
+    value=  -1, value(bits)=11111111111111111111111111111111 , trailz=  0
+    value=   0, value(bits)=00000000000000000000000000000000 , trailz= 32
+    value=   1, value(bits)=00000000000000000000000000000001 , trailz=  0
+    value=  96, value(bits)=00000000000000000000000001100000 , trailz=  5
+    elemental and any integer kind:
+              5          13           4
+    0000000000000000000000000000000000000000000000000000000000100000
+    0000000000000000000000000000000000000000000000000010000000000000
+    0000000000000000000000000000000000000000000000000000000000010000
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bit_size(3), +popcnt(3), +poppar(3), +leadz(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

dshiftl#

+
+

Name#

+

dshiftl(3) - [BIT:COPY] Combined left shift of the bits of two integers

+
+
+

Synopsis#

+
    result = dshiftl(i, j, shift)
+
+
+
     elemental integer(kind=KIND) function dshiftl(i, j, shift)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=KIND),intent(in) :: j
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • the kind of i, j, and the return value are the same. An +exception is that one of i and j may be a BOZ literal constant +(A BOZ literal constant is a binary, octal or hex constant).

  • +
  • If either I or J is a BOZ-literal-constant (but not both), it is +first converted as if by the intrinsic function int(3) to type +integer with the kind type parameter of the other.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

dshiftl(3) combines bits of i and j. The rightmost shift +bits of the result are the leftmost shift bits of j, and the +remaining bits are the rightmost bitsize(i)-shift of i.

+

Hence dshiftl is designated as a “combined left shift”, because +it is like we appended i and j together, shifted it shift +bits to the left, and then kept the same number of bits as i or +j had.

+

For example, for two 16-bit values if shift=6

+
      SHIFT=6
+      I =             1111111111111111
+      J =             0000000000000000
+      COMBINED        11111111111111110000000000000000
+      DROP LEFT BITS  11111111110000000000000000
+      KEEP LEFT 16    1111111111000000
+
+
+
+

NOTE#

+

This is equivalent to

+
     ior( shiftl(i, shift), shiftr(j, bit_size(j) - shift) )
+
+
+

Also note that using this last representation of the operation is can +be derived that when both i and j have the same value as in

+
      dshiftl(i, i, shift)
+
+
+

the result has the same value as a circular shift:

+
      ishftc(i, shift)
+
+
+
+
+
+

Options#

+
    +
  • +
    i

    used to define the left pattern of bits in the combined pattern

    +
    +
    +
  • +
  • +
    j

    used for the right pattern of bits in the combined pattern

    +
    +
    +
  • +
  • +
    shift

    shall be nonnegative and less than or equal to the number of bits +in an integer input value (ie. the bit size of either one that is +not a BOZ literal constant).

    +
    +
    +
  • +
+
+
+

Result#

+

The leftmost shift bits of j are copied to the rightmost bits +of the result, and the remaining bits are the rightmost bits of i.

+
+
+

Examples#

+

Sample program:

+
program demo_dshiftl
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer(kind=int32) :: i, j
+integer             :: shift
+
+  ! basic usage
+   write(*,*) dshiftl (1, 2**30, 2) ! int32 values on little-endian => 5
+
+  ! print some simple calls as binary to better visual the results
+   i=-1
+   j=0
+   shift=5
+   call printit()
+
+   ! the leftmost SHIFT bits of J are copied to the rightmost result bits
+   j=int(b"11111000000000000000000000000000")
+   ! and the other bits are the rightmost bits of I
+   i=int(b"00000000000000000000000000000000")
+   call printit()
+
+   j=int(b"11111000000000000000000000000000")
+   i=int(b"00000111111111111111111111111111")
+   ! result should be all 1s
+   call printit()
+
+contains
+subroutine printit()
+   ! print i,j,shift and then i,j, and the result as binary values
+    write(*,'(*(g0))')'I=',i,' J=',j,' SHIFT=',shift
+    write(*,'(b32.32)') i,j, dshiftl (i, j, shift)
+end subroutine printit
+
+end program demo_dshiftl
+
+
+

Results:

+
   > I=-1 J=0 SHIFT=5
+   > 11111111111111111111111111111111
+   > 00000000000000000000000000000000
+   > 11111111111111111111111111100000
+   > I=0 J=-134217728 SHIFT=5
+   > 00000000000000000000000000000000
+   > 11111000000000000000000000000000
+   > 00000000000000000000000000011111
+   > I=134217727 J=-134217728 SHIFT=5
+   > 00000111111111111111111111111111
+   > 11111000000000000000000000000000
+   > 11111111111111111111111111111111
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

dshiftr(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

dshiftr#

+
+

Name#

+

dshiftr(3) - [BIT:COPY] Combined right shift of the bits of two integers

+
+
+

Synopsis#

+
    result = dshiftr(i, j, shift)
+
+
+
     elemental integer(kind=KIND) function dshiftr(i, j, shift)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=KIND),intent(in) :: j
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any kind value for the integer type

  • +
  • the kind of i, j, and the return value are the same. An +exception is that one of i and j may be a BOZ literal constant +(A BOZ literal constant is a binary, octal or hex constant).

  • +
  • If either I or J is a BOZ-literal-constant, it is first converted +as if by the intrinsic function int(3) to type integer with the +kind type parameter of the other.

  • +
+
+
+

Description#

+

dshiftr(3) combines bits of i and j. The leftmost shift +bits of the result are the rightmost shift bits of i, and the +remaining bits are the leftmost bits of j.

+

It may be thought of as appending the bits of i and j, dropping +off the shift rightmost bits, and then retaining the same number +of rightmost bits as an input value, hence the name “combined right +shift”…

+

Given two 16-bit values labeled alphabetically …

+
   i=ABCDEFGHIJKLMNOP
+   j=abcdefghijklmnop
+
+
+

Append them together

+
   ABCDEFGHIJKLMNOPabcdefghijklmnop
+
+
+

Shift them N=6 bits to the right dropping off bits

+
         ABCDEFGHIJKLMNOPabcdefghij
+
+
+

Keep the 16 right-most bits

+
                   KLMNOPabcdefghij
+
+
+
+

NOTE#

+

dshifr(i,j,shift) is equivalent to

+
     ior(shiftl (i, bit_size(i) - shift), shiftr(j, shift) )
+
+
+

it can also be seen that if i and j have the same +value

+
     dshiftr( i, i, shift )
+
+
+

this has the same result as a negative circular shift

+
     ishftc( i,   -shift ).
+
+
+
+
+
+

Options#

+
    +
  • +
    i

    left value of the pair of values to be combine-shifted right

    +
    +
    +
  • +
  • +
    j

    right value of the pair of values to be combine-shifted right

    +
    +
    +
  • +
  • +
    shift

    the shift value is non-negative and less than or equal to the number +of bits in an input value as can be computed by bit_size(3).

    +
    +
    +
  • +
+
+
+

Result#

+

The result is a combined right shift of i and j that is the +same as the bit patterns of the inputs being combined left to right, +dropping off shift bits on the right and then retaining the same +number of bits as an input value from the rightmost bits.

+
+
+

Examples#

+

Sample program:

+
program demo_dshiftr
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer(kind=int32) :: i, j
+integer             :: shift
+
+  ! basic usage
+   write(*,*) dshiftr (1, 2**30, 2)
+
+  ! print some calls as binary to better visualize the results
+   i=-1
+   j=0
+   shift=5
+
+   ! print values
+    write(*,'(*(g0))')'I=',i,' J=',j,' SHIFT=',shift
+    write(*,'(b32.32)') i,j, dshiftr (i, j, shift)
+
+  ! visualizing a "combined right shift" ...
+   i=int(b"00000000000000000000000000011111")
+   j=int(b"11111111111111111111111111100000")
+   ! appended together ( i//j )
+   ! 0000000000000000000000000001111111111111111111111111111111100000
+   ! shifted right SHIFT values dropping off shifted values
+   !      00000000000000000000000000011111111111111111111111111111111
+   ! keep enough rightmost bits to fill the kind
+   !                                 11111111111111111111111111111111
+   ! so the result should be all 1s bits ...
+
+    write(*,'(*(g0))')'I=',i,' J=',j,' SHIFT=',shift
+    write(*,'(b32.32)') i,j, dshiftr (i, j, shift)
+
+end program demo_dshiftr
+
+
+

Results:

+
 >    1342177280
+ >  I=-1 J=0 SHIFT=5
+ >  11111111111111111111111111111111
+ >  00000000000000000000000000000000
+ >  11111000000000000000000000000000
+ >  I=31 J=-32 SHIFT=5
+ >  00000000000000000000000000011111
+ >  11111111111111111111111111100000
+ >  11111111111111111111111111111111
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

dshiftl(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

merge_bits#

+
+

Name#

+

merge_bits(3) - [BIT:COPY] Merge bits using a mask

+
+
+

Synopsis#

+
    result = merge_bits(i, j, mask)
+
+
+
     elemental integer(kind=KIND) function merge_bits(i,j,mask)
+
+      integer(kind=KIND), intent(in) :: i, j, mask
+
+
+
+
+

Characteristics#

+
    +
  • the result and all input values have the same integer type and +KIND with the exception that the mask and either i or j may be +a BOZ constant.

  • +
+
+
+

Description#

+

A common graphics operation in Ternary Raster Operations is to combine +bits from two different sources, generally referred to as bit-blending. +merge_bits(3) performs a masked bit-blend of i and j using +the bits of the mask value to determine which of the input values +to copy bits from.

+

Specifically, The k-th bit of the result is equal to the k-th bit of +i if the k-th bit of mask is 1; it is equal to the k-th bit +of j otherwise (so all three input values must have the same number +of bits).

+

The resulting value is the same as would result from

+
    ior (iand (i, mask),iand (j, not (mask)))
+
+
+

An exception to all values being of the same integer type is that i +or j and/or the mask may be a BOZ constant (A BOZ constant means it is +either a Binary, Octal, or Hexadecimal literal constant). The BOZ values +are converted to the integer type of the non-BOZ value(s) as if called +by the intrinsic function int() with the kind of the non-BOZ value(s), +so the BOZ values must be in the range of the type of the result.

+
+
+

Options#

+
    +
  • +
    i

    value to select bits from when the associated bit in the mask is 1.

    +
    +
    +
  • +
  • +
    j

    value to select bits from when the associated bit in the mask is 0.

    +
    +
    +
  • +
  • +
    mask

    a value whose bits are used as a mask to select bits from i and j

    +
    +
    +
  • +
+
+
+

Result#

+

The bits blended from i and j using the mask mask.

+
+
+

Examples#

+

Sample program:

+
program demo_merge_bits
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int16) :: if_one,if_zero,msk
+character(len=*),parameter :: fmt='(*(g0, 1X))'
+
+   ! basic usage
+   print *,'MERGE_BITS( 5,10,41) should be 3.=>',merge_bits(5,10,41)
+   print *,'MERGE_BITS(13,18,22) should be 4.=>',merge_bits(13,18,22)
+
+   ! use some values in base2 illustratively:
+   if_one =int(b'1010101010101010',kind=int16)
+   if_zero=int(b'0101010101010101',kind=int16)
+
+   msk=int(b'0101010101010101',kind=int16)
+   print '("should get all zero bits =>",b16.16)', &
+   & merge_bits(if_one,if_zero,msk)
+
+   msk=int(b'1010101010101010',kind=int16)
+   print '("should get all ones bits =>",b16.16)', &
+   & merge_bits(if_one,if_zero,msk)
+
+   ! using BOZ values
+   print fmt, &
+   & merge_bits(32767_int16,    o'12345',         32767_int16), &
+   & merge_bits(o'12345', 32767_int16, b'0000000000010101'), &
+   & merge_bits(32767_int16,    o'12345',             z'1234')
+
+   ! a do-it-yourself equivalent for comparison and validation
+   print fmt, &
+   & ior(iand(32767_int16, 32767_int16),                   &
+   &   iand(o'12345', not(32767_int16))),                  &
+
+   & ior(iand(o'12345', int(o'12345', kind=int16)),        &
+   &   iand(32767_int16, not(int(o'12345', kind=int16)))), &
+
+   & ior(iand(32767_int16, z'1234'),                       &
+   &   iand(o'12345', not(int( z'1234', kind=int16))))
+
+end program demo_merge_bits
+
+
+

Results:

+
    MERGE_BITS( 5,10,41) should be 3.=>           3
+    MERGE_BITS(13,18,22) should be 4.=>           4
+   should get all zero bits =>0000000000000000
+   should get all ones bits =>1111111111111111
+   32767 32751 5877
+   32767 32767 5877
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

mvbits#

+
+

Name#

+

mvbits(3) - [BIT:COPY] Reproduce bit patterns found in one integer in another

+
+
+

Synopsis#

+
   call mvbits(from, frompos, len, to, topos)
+
+
+
    elemental subroutine mvbits( from, frompos, len, to, topos )
+
+     integer(kind=KIND),intent(in)    :: from
+     integer(kind=**),intent(in)      :: frompos
+     integer(kind=**),intent(in)      :: len
+     integer(kind=KIND),intent(inout) :: to
+     integer(kind=**),intent(in)      :: topos
+
+
+
+
+

Characteristics#

+
    +
  • from is an integer

  • +
  • frompos is an integer

  • +
  • len is an integer

  • +
  • to is an integer of the same kind as from.

  • +
  • topos is an integer

  • +
+
+
+

Description#

+

mvbits(3) copies a bit pattern found in a range of adjacent bits in +the integer from to a specified position in another integer to +(which is of the same kind as from). It otherwise leaves the bits +in to as-is.

+

The bit positions copied must exist within the value of from. +That is, the values of frompos+len-1 and topos+len-1 must be +nonnegative and less than bit_size(from).

+

The bits are numbered 0 to bit_size(i)-1, from right to left.

+
+
+

Options#

+
    +
  • +
    from

    An integer to read bits from.

    +
    +
    +
  • +
  • +
    frompos

    frompos is the position of the first bit to copy. It is a +nonnegative integer value < bit_size(from).

    +
    +
    +
  • +
  • +
    len

    A nonnegative integer value that indicates how many bits to +copy from from. It must not specify copying bits past the end +of from. That is, frompos + len must be less than or equal +to bit_size(from).

    +
    +
    +
  • +
  • +
    to

    The integer variable to place the copied bits into. It must +be of the same kind as from and may even be the same variable +as from, or associated to it.

    +
    +
    +

    to is set by copying the sequence of bits of length len, +starting at position frompos of from to position topos of +to. No other bits of to are altered. On return, the len +bits of to starting at topos are equal to the value that +the len bits of from starting at frompos had on entry.

    +
  • +
  • +
    topos

    A nonnegative integer value indicating the starting location in +to to place the specified copy of bits from from. +topos + len must be less than or equal to bit_size(to).

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program that populates a new 32-bit integer with its bytes +in reverse order from the input value (ie. changes the Endian of the integer).

+
program demo_mvbits
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int32) :: intfrom, intto, abcd_int
+character(len=*),parameter :: bits= '(g0,t30,b32.32)'
+character(len=*),parameter :: fmt= '(g0,t30,a,t40,b32.32)'
+
+    intfrom=huge(0)  ! all bits are 1 accept the sign bit
+    intto=0          ! all bits are 0
+
+    !! CHANGE BIT 0
+    ! show the value and bit pattern
+    write(*,bits)intfrom,intfrom
+    write(*,bits)intto,intto
+
+    ! copy bit 0 from intfrom to intto to show the rightmost bit changes
+    !          (from,    frompos, len,    to, topos)
+    call mvbits(intfrom,       0,   1, intto,     0) ! change bit 0
+    write(*,bits)intto,intto
+
+    !! COPY PART OF A VALUE TO ITSELF
+    ! can copy bit from a value to itself
+    call mvbits(intfrom,0,1,intfrom,31)
+    write(*,bits)intfrom,intfrom
+
+    !! MOVING BYTES AT A TIME
+    ! make native integer value with bit patterns
+    ! that happen to be the same as the beginning of the alphabet
+    ! to make it easy to see the bytes are reversed
+    abcd_int=transfer('abcd',0)
+    ! show the value and bit pattern
+    write(*,*)'native'
+    write(*,fmt)abcd_int,abcd_int,abcd_int
+
+    ! change endian of the value
+    abcd_int=int_swap32(abcd_int)
+    ! show the values and their bit pattern
+    write(*,*)'non-native'
+    write(*,fmt)abcd_int,abcd_int,abcd_int
+
+ contains
+
+ pure elemental function int_swap32(intin) result(intout)
+ ! Convert a 32 bit integer from big Endian to little Endian,
+ ! or conversely from little Endian to big Endian.
+ !
+ integer(kind=int32), intent(in)  :: intin
+ integer(kind=int32) :: intout
+    ! copy bytes from input value to new position in output value
+    !          (from,  frompos, len,     to, topos)
+    call mvbits(intin,       0,   8, intout,    24) ! byte1 to byte4
+    call mvbits(intin,       8,   8, intout,    16) ! byte2 to byte3
+    call mvbits(intin,      16,   8, intout,     8) ! byte3 to byte2
+    call mvbits(intin,      24,   8, intout,     0) ! byte4 to byte1
+ end function int_swap32
+
+ end program demo_mvbits
+
+
+

Results:

+
   2147483647                   01111111111111111111111111111111
+   0                            00000000000000000000000000000000
+   1                            00000000000000000000000000000001
+   -1                           11111111111111111111111111111111
+    native
+   1684234849                   abcd      01100100011000110110001001100001
+    non-native
+   1633837924                   dcba      01100001011000100110001101100100
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +btest(3), +ibclr(3), +ibits(3), +ibset(3), +iand(3), +ior(3), +ieor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ibits#

+
+

Name#

+

ibits(3) - [BIT:COPY] Extraction of a subset of bits

+
+
+

Synopsis#

+
    result = ibits(i, pos, len)
+
+
+
     elemental integer(kind=KIND) function ibits(i,pos,len)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: pos
+      integer(kind=**),intent(in) :: len
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported integer kind

  • +
  • i may be any supported integer kind as well

  • +
  • the return value will be the same kind as i

  • +
+
+
+

Description#

+

ibits(3) extracts a field of bits from i, starting +from bit position pos and extending left for a total of len bits.

+

The result is then right-justified and the remaining left-most bits in the +result are zeroed.

+

The position pos is calculated assuming the right-most bit is zero and +the positions increment to the left.

+
+
+

Options#

+
    +
  • +
    i

    The value to extract bits from

    +
    +
    +
  • +
  • +
    pos

    The position of the bit to start copying at. pos is +non-negative.

    +
    +
    +
  • +
  • +
    len

    the number of bits to copy from i. It must be non-negative.

    +
    +
    +
  • +
+

pos + len shall be less than or equal to bit_size(i).

+
+
+

Result#

+

The return value is composed of the selected bits right-justified, +left-padded with zeros.

+
+
+

Examples#

+

Sample program:

+
program demo_ibits
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int16) :: i,j
+  ! basic usage
+   print *,ibits (14, 1, 3) ! should be seven
+   print *,ibits(-1,10,3)   ! and so is this
+   ! it is easier to see using binary representation
+   i=int(b'0101010101011101',kind=int16)
+   write(*,'(b16.16,1x,i0)') ibits(i,3,3), ibits(i,3,3)
+
+  ! we can illustrate this as
+   !        #-- position 15
+   !        |              #-- position 0
+   !        |   <-- +len   |
+   !        V              V
+   !        5432109876543210
+   i =int(b'1111111111111111',kind=int16)
+   !          ^^^^
+   j=ibits(i,10,4) ! start at 10th from left and proceed
+                   ! left for a total of 4 characters
+   write(*,'(a,b16.16)')'j=',j
+  ! lets do something less ambiguous
+   i =int(b'0010011000000000',kind=int16)
+   j=ibits(i,9,5)
+   write(*,'(a,b16.16)')'j=',j
+end program demo_ibits
+
+
+

Results:

+
 > 7
+ > 7
+ > 0000000000000011 3
+ > j=0000000000001111
+ > j=0000000000010011
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +btest(3), +ibclr(3), +ibset(3), +iand(3), +ior(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ibclr#

+
+

Name#

+

ibclr(3) - [BIT:SET] Clear a bit

+
+
+

Synopsis#

+
    result = ibclr(i, pos)
+
+
+
     elemental integer(kind=KIND) function ibclr(i,pos)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: pos
+
+
+
+
+

Characteristics#

+
    +
  • i shall be type integer.

  • +
  • pos shall be type integer.

  • +
  • The return value is of the same kind as i.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

ibclr(3) returns the value of i with the bit at position pos +set to zero.

+
+
+

Options#

+
    +
  • +
    i

    The initial value to be modified

    +
    +
    +
  • +
  • +
    pos

    The position of the bit to change in the input value. A value +of zero refers to the right-most bit. The value of pos must be +nonnegative and less than (bit_size(i)).

    +
    +
    +
  • +
+
+
+

Result#

+

The returned value has the same bit sequence as i except the +designated bit is unconditionally set to 0

+
+
+

Examples#

+

Sample program:

+
program demo_ibclr
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int16) :: i
+  ! basic usage
+   print *,ibclr (16, 1), ' ==> ibclr(16,1) has the value 15'
+
+   ! it is easier to see using binary representation
+   i=int(b'0000000000111111',kind=int16)
+   write(*,'(b16.16,1x,i0)') ibclr(i,3), ibclr(i,3)
+
+  ! elemental
+   print *,'an array of initial values may be given as well'
+   print *,ibclr(i=[7,4096,9], pos=2)
+   print *
+   print *,'a list of positions results in multiple returned values'
+   print *,'not multiple bits set in one value, as the routine is  '
+   print *,'a scalar function; calling it elementally essentially  '
+   print *,'calls it multiple times.                               '
+   write(*,'(b16.16)') ibclr(i=-1_int16, pos=[1,2,3,4])
+
+   ! both may be arrays if of the same size
+
+end program demo_ibclr
+
+
+

Results:

+
 >           16  ==> ibclr(16,1) has the value 15
+ > 0000000000110111 55
+ >  an array of initial values may be given as well
+ >            3        4096           9
+ >
+ >  a list of positions results in multiple returned values
+ >  not multiple bits set in one value, as the routine is
+ >  a scalar function; calling it elementally essentially
+ >  calls it multiple times.
+ > 1111111111111101
+ > 1111111111111011
+ > 1111111111110111
+ > 1111111111101111
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +not(3), +btest(3), +ibset(3), +ibits(3), +iand(3), +ior(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ibset#

+
+

Name#

+

ibset(3) - [BIT:SET] Set a bit to one in an integer value

+
+
+

Synopsis#

+
    result = ibset(i, pos)
+
+
+
     elemental integer(kind=KIND) function ibset(i,pos)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: pos
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • The return value is of the same kind as i. Otherwise, +any integer kinds are allowed.

  • +
+
+
+

Description#

+

ibset(3) returns the value of i with the bit at position pos set to one.

+
+
+

Options#

+
    +
  • +
    i

    The initial value to be modified

    +
    +
    +
  • +
  • +
    pos

    The position of the bit to change in the input value. A value +of zero refers to the right-most bit. The value of pos must be +nonnegative and less than (bit_size(i)).

    +
    +
    +
  • +
+
+
+

Result#

+

The returned value has the same bit sequence as i except the +designated bit is unconditionally set to 1.

+
+
+

Examples#

+

Sample program:

+
program demo_ibset
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int16) :: i
+  ! basic usage
+   print *,ibset (12, 1), 'ibset(12,1) has the value 14'
+
+   ! it is easier to see using binary representation
+   i=int(b'0000000000000110',kind=int16)
+   write(*,'(b16.16,1x,i0,1x,i0)') ibset(i,12), ibset(i,12), i
+
+  ! elemental
+   print *,'an array of initial values may be given as well'
+   print *,ibset(i=[0,4096], pos=2)
+   print *
+   print *,'a list of positions results in multiple returned values'
+   print *,'not multiple bits set in one value, as the routine is  '
+   print *,'a scalar function; calling it elementally essentially  '
+   print *,'calls it multiple times.                               '
+   write(*,'(b16.16)') ibset(i=0, pos=[1,2,3,4])
+
+   ! both may be arrays if of the same size
+
+end program demo_ibset
+
+
+

Results:

+
 >           14 ibset(12,1) has the value 14
+ > 0001000000000110 4102 6
+ >  an array of initial values may be given as well
+ >            4        4100
+ >
+ >  a list of positions results in multiple returned values
+ >  not multiple bits set in one value, as the routine is
+ >  a scalar function; calling it elementally essentially
+ >  calls it multiple times.
+ > 0000000000000010
+ > 0000000000000100
+ > 0000000000001000
+ > 0000000000010000
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ibclr(3)

+

ieor(3), +not(3), +btest(3), +ibits(3), +iand(3), +ior(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

maskl#

+
+

Name#

+

maskl(3) - [BIT:SET] Generates a left justified mask

+
+
+

Synopsis#

+
    result = maskl( i [,kind] )
+
+
+
     elemental integer(kind=KIND) function maskl(i,KIND)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer

  • +
  • kind Shall be a scalar constant expression of type integer +whose value is a supported integer kind.

  • +
  • The result is an integer of the same kind as i unless kind is +present, which is then used to specify the kind of the result.

  • +
+
+
+

Description#

+

maskl(3) has its leftmost i bits set to 1, and the remaining +bits set to 0.

+
+
+

Options#

+
    +
  • +
    i

    the number of left-most bits to set in the integer result. It +must be from 0 to the number of bits for the kind of the result. +The default kind of the result is the same as i unless the result +size is specified by kind. That is, these Fortran statements must +be .true. :

    +
    +
    +
  • +
+
   i >= 0 .and. i < bitsize(i) ! if KIND is not specified
+   i >= 0 .and. i < bitsize(0_KIND) ! if KIND is specified
+
+
+
    +
  • +
    kind

    designates the kind of the integer result.

    +
    +
    +
  • +
+
+
+

Result#

+

The leftmost i bits of the output integer are set to 1 and the +other bits are set to 0.

+
+
+

Examples#

+

Sample program:

+
program demo_maskl
+implicit none
+integer :: i
+  ! basics
+   i=3
+   write(*,'(i0,1x,b0)') i, maskl(i)
+
+  ! elemental
+   write(*,'(*(i11,1x,b0.32,1x,/))') maskl([(i,i,i=0,bit_size(0),4)])
+end program demo_maskl
+
+
+

Results:

+
 > 3 11100000000000000000000000000000
+ >           0 00000000000000000000000000000000
+ >  -268435456 11110000000000000000000000000000
+ >   -16777216 11111111000000000000000000000000
+ >    -1048576 11111111111100000000000000000000
+ >      -65536 11111111111111110000000000000000
+ >       -4096 11111111111111111111000000000000
+ >        -256 11111111111111111111111100000000
+ >         -16 11111111111111111111111111110000
+ >          -1 11111111111111111111111111111111
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

maskr(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

maskr#

+
+

Name#

+

maskr(3) - [BIT:SET] Generates a right-justified mask

+
+
+

Synopsis#

+
    result = maskr( i [,kind] )
+
+
+
     elemental integer(kind=KIND) function maskr(i,KIND)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer

  • +
  • kind Shall be a scalar constant expression of type integer +whose value is a supported integer kind.

  • +
  • The result is an integer of the same kind as i unless kind is +present, which is then used to specify the kind of the result.

  • +
+
+
+

Description#

+

maskr(3) generates an integer with its rightmost i +bits set to 1, and the remaining bits set to 0.

+
+
+

Options#

+
    +
  • +
    i

    the number of right-most bits to set in the integer result. It +must be from 0 to the number of bits for the kind of the result. +The default kind of the result is the same as i unless the result +size is specified by kind. That is, these Fortran statements must +be .true. :

    +
    +
    +
  • +
+
   i >= 0 .and. i < bitsize(i) ! if KIND is not specified
+   i >= 0 .and. i < bitsize(0_KIND) ! if KIND is specified
+
+
+
    +
  • +
    kind

    designates the kind of the integer result.

    +
    +
    +
  • +
+
+
+

Result#

+

The rightmost i bits of the output integer are set to 1 and the +other bits are set to 0.

+
+
+

Examples#

+

Sample program:

+
program demo_maskr
+implicit none
+integer :: i
+
+  ! basics
+   print *,'basics'
+   write(*,'(i0,t5,b32.32)') 1, maskr(1)
+   write(*,'(i0,t5,b32.32)') 5,  maskr(5)
+   write(*,'(i0,t5,b32.32)') 11, maskr(11)
+   print *,"should be equivalent on two's-complement processors"
+   write(*,'(i0,t5,b32.32)') 1,  shiftr(-1,bit_size(0)-1)
+   write(*,'(i0,t5,b32.32)') 5,  shiftr(-1,bit_size(0)-5)
+   write(*,'(i0,t5,b32.32)') 11, shiftr(-1,bit_size(0)-11)
+
+  ! elemental
+   print *,'elemental '
+   print *,'(array argument accepted like called with each element)'
+   write(*,'(*(i11,1x,b0.32,1x,/))') maskr([(i,i,i=0,bit_size(0),4)])
+
+end program demo_maskr
+
+
+

Results:

+
 >   basics
+ >  1   00000000000000000000000000000001
+ >  5   00000000000000000000000000011111
+ >  11  00000000000000000000011111111111
+ >   should be equivalent on two's-complement processors
+ >  1   00000000000000000000000000000001
+ >  5   00000000000000000000000000011111
+ >  11  00000000000000000000011111111111
+ >   elemental
+ >   (array argument accepted like called with each element)
+ >            0 00000000000000000000000000000000
+ >           15 00000000000000000000000000001111
+ >          255 00000000000000000000000011111111
+ >         4095 00000000000000000000111111111111
+ >        65535 00000000000000001111111111111111
+ >      1048575 00000000000011111111111111111111
+ >     16777215 00000000111111111111111111111111
+ >    268435455 00001111111111111111111111111111
+ >           -1 11111111111111111111111111111111
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

maskl(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

iparity#

+
+

Name#

+

iparity(3) - [BIT:LOGICAL] Bitwise exclusive OR of array elements

+
+
+

Synopsis#

+
    result = iparity( array [,mask] ) | iparity( array, dim [,mask] )
+
+
+
     integer(kind=KIND) function iparity(array, dim, mask )
+
+      integer(kind=KIND),intent(in) :: array(..)
+      logical(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
    +
  • array - An integer array.

  • +
  • dim - an integer scalar from 1 to the rank of array

  • +
  • mask - logical conformable with array.

  • +
+
+
+

Description#

+

iparity(3) reduces with bitwise xor (exclusive or) the elements +of array along dimension dim if the corresponding element in +mask is .true..

+
+
+

Options#

+
    +
  • +
    array

    an array of integer values

    +
    +
    +
  • +
  • dim a value from 1 to the rank of array.

  • +
  • +
    mask

    a logical mask either a scalar or an array of the same shape +as array.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as array.

+

If dim is absent, a scalar with the bitwise xor of all elements in array +is returned. Otherwise, an array of rank n-1, where n equals the +rank of array, and a shape similar to that of array with dimension dim +dropped is returned.

+

Case (i): The result of IPARITY (ARRAY) has a value equal to the +bitwise exclusive OR of all the elements of ARRAY. If +ARRAY has size zero the result has the value zero.

+

Case (ii): The result of IPARITY (ARRAY, MASK=MASK) has a value +equal to that of

+
               IPARITY (PACK (ARRAY, MASK)).
+
+
+

Case (iii): The result of IPARITY (ARRAY, DIM=DIM [, MASK=MASK]) +has a value equal to that of IPARITY (ARRAY [, MASK=MASK]) +if ARRAY has rank one.

+
           Otherwise, an array of values reduced along the dimension
+           **dim** is returned.
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_iparity
+implicit none
+integer, dimension(2) :: a
+  a(1) = int(b'00100100')
+  a(2) = int(b'01101010')
+  print '(b8.8)', iparity(a)
+end program demo_iparity
+
+
+

Results:

+
   01001110
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

iany(3), +iall(3), +ieor(3), +parity(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

iall#

+
+

Name#

+

iall(3) - [BIT:LOGICAL] Bitwise and of array elements

+
+
+

Synopsis#

+
    result = iall(array [,mask]) | iall(array ,dim [,mask])
+
+
+
     integer(kind=KIND) function iall(array,dim,mask)
+
+      integer(kind=KIND),intent(in)        :: array(*)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(*)
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • array must be an integer array

  • +
  • mask is a logical array that conforms to array of any +logical kind.

  • +
  • dim may be of any integer kind.

  • +
  • The result will by of the same type and kind as array.

  • +
+
+
+

Description#

+

iall(3) reduces with a bitwise and the elements of array along +dimension dim if the corresponding element in mask is .true..

+
+
+

Options#

+
    +
  • +
    array

    Shall be an array of type integer

    +
    +
    +
  • +
  • +
    dim

    (Optional) shall be a scalar of type integer with a value in the +range from 1 to n, where n equals the rank of array.

    +
    +
    +
  • +
  • +
    mask

    (Optional) shall be of type logical and either be a scalar or an +array of the same shape as array.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as array.

+

If dim is absent, a scalar with the bitwise all of all elements in +array is returned. Otherwise, an array of rank n-1, where n +equals the rank of array, and a shape similar to that of array +with dimension dim dropped is returned.

+
+
+

Examples#

+

Sample program:

+
program demo_iall
+use, intrinsic :: iso_fortran_env, only : integer_kinds, &
+ & int8, int16, int32, int64
+implicit none
+integer(kind=int8) :: a(2)
+
+   a(1) = int(b'00100100')
+   a(2) = int(b'01101010')
+
+   print '(b8.8)', iall(a)
+
+end program demo_iall
+
+
+

Results:

+
 > 00100000
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

iany(3), +iparity(3), +iand(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

iand#

+
+

Name#

+

iand(3) - [BIT:LOGICAL] Bitwise logical AND

+
+
+

Synopsis#

+
    result = iand(i, j)
+
+
+
     elemental integer(kind=KIND) function iand(i,j)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=KIND),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i, j and the result shall have the same integer type and kind, +with the exception that one of i or j may be a BOZ constant.

  • +
+
+
+

Description#

+

iand(3) returns the bitwise logical and of two values.

+
+
+

Options#

+
    +
  • +
    i

    one of the pair of values to compare the bits of

    +
    +
    +
  • +
  • +
    j

    one of the pair of values to compare the bits of

    +
    +
    +
  • +
+

If either i or j is a BOZ-literal-constant, it is first converted +as if by the intrinsic function int(3) to type integer with the +kind type parameter of the other.

+
+
+

Result#

+

The result has the value obtained by combining i and i +bit-by-bit according to the following table:

+
    I  |  J  |  IAND (I, J)
+  ----------------------------
+    1  |  1  |    1
+    1  |  0  |    0
+    0  |  1  |    0
+    0  |  0  |    0
+
+
+

So if both the bit in i and j are on the resulting bit is on +(a one); else the resulting bit is off (a zero).

+

This is commonly called the “bitwise logical AND” of the two values.

+
+
+

Examples#

+

Sample program:

+
program demo_iand
+implicit none
+integer :: a, b
+ data a / z'f' /, b / z'3' /
+ write (*,*) 'a=',a,' b=',b,'iand(a,b)=',iand(a, b)
+ write (*,'(b32.32)') a,b,iand(a,b)
+end program demo_iand
+
+
+

Results:

+
    a= 15  b= 3 iand(a,b)= 3
+   00000000000000000000000000001111
+   00000000000000000000000000000011
+   00000000000000000000000000000011
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +btest(3), +ibclr(3), +ibits(3), +ibset(3), +ior(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

iany#

+
+

Name#

+

iany(3) - [BIT:LOGICAL] Bitwise OR of array elements

+
+
+

Synopsis#

+
    result = iany(array [,mask]) | iany(array ,dim [,mask])
+
+
+
     integer(kind=KIND) function iany(array,dim,mask)
+
+      integer(kind=KIND),intent(in)        :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+      logical(kind=**),intent(in),optional :: mask(..)
+
+
+
+
+

Characteristics#

+
    +
  • array is an integer array

  • +
  • dim may be of any integer kind.

  • +
  • mask is a logical array that conforms to array

  • +
  • The result will by of the same type and kind +as array. It is scalar if dim does not appear or is 1. +Otherwise, it is the shape and rank of array reduced by the +dimension dim.

  • +
+

note a kind designated as ** may be any supported kind for the type

+
+
+

Description#

+

iany(3) reduces with bitwise OR (inclusive OR) the +elements of array along dimension dim if the corresponding +element in mask is .true..

+
+
+

Options#

+
    +
  • +
    array

    an array of elements to selectively OR based on the mask.

    +
    +
    +
  • +
  • +
    dim

    a value in the range from 1 to n, where n equals the rank +of array.

    +
    +
    +
  • +
  • +
    mask

    a logical scalar; or an array of the same shape as array.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as array.

+

If dim is absent, a scalar with the bitwise or of all elements in +array is returned. Otherwise, an array of rank n-1, where n +equals the rank of array, and a shape similar to that of array +with dimension dim dropped is returned.

+
+
+

Examples#

+

Sample program:

+
program demo_iany
+use, intrinsic :: iso_fortran_env, only : integer_kinds, &
+ & int8, int16, int32, int64
+implicit none
+logical,parameter :: T=.true., F=.false.
+integer(kind=int8) :: a(3)
+   a(1) = int(b'00100100',int8)
+   a(2) = int(b'01101010',int8)
+   a(3) = int(b'10101010',int8)
+   write(*,*)'A='
+   print '(1x,b8.8)', a
+   print *
+   write(*,*)'IANY(A)='
+   print '(1x,b8.8)', iany(a)
+   print *
+   write(*,*)'IANY(A) with a mask'
+   print '(1x,b8.8)', iany(a,mask=[T,F,T])
+   print *
+   write(*,*)'should match '
+   print '(1x,b8.8)', iany([a(1),a(3)])
+   print *
+   write(*,*)'does it?'
+   write(*,*)iany(a,[T,F,T]) == iany([a(1),a(3)])
+end program demo_iany
+
+
+

Results:

+
    A=
+    00100100
+    01101010
+    10101010
+
+    IANY(A)=
+    11101110
+
+    IANY(A) with a mask
+    10101110
+
+    should match
+    10101110
+
+    does it?
+    T
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

iparity(3), +iall(3), +ior(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ieor#

+
+

Name#

+

ieor(3) - [BIT:LOGICAL] Bitwise exclusive OR

+
+
+

Synopsis#

+
    result = ieor(i, j)
+
+
+
     elemental integer(kind=**) function ieor(i,j)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i, j and the result must be of the same integer kind.

  • +
  • An exception is that one of i and j may be a BOZ literal +constant

  • +
+
+
+

Description#

+

ieor(3) returns a bitwise exclusive-or of i and j.

+

An exclusive OR or “exclusive disjunction” is a logical operation that +is true if and only if its arguments differ. In this case a one-bit +and a zero-bit substitute for true and false.

+

This is often represented with the notation “XOR”, for “eXclusive OR”.

+

An alternate way to view the process is that the result has the value +obtained by combining i and j bit-by-bit according to the +following table:

+
  >  I | J |IEOR (I, J)
+  >  --#---#-----------
+  >  1 | 1 |  0
+  >  1 | 0 |  1
+  >  0 | 1 |  1
+  >  0 | 0 |  0
+
+
+
+
+

Options#

+
    +
  • +
    i

    the first of the two values to XOR

    +
    +
    +
  • +
  • +
    j

    the second of the two values to XOR

    +
    +
    +
  • +
+

If either I or J is a boz-literal-constant, it is first converted +as if by the intrinsic function INT to type integer with the kind +type parameter of the other.

+
+
+

Result#

+

If a bit is different at the same location in i and j +the corresponding bit in the result is 1, otherwise it is 0.

+
+
+

Examples#

+

Sample program:

+
program demo_ieor
+use,intrinsic :: iso_fortran_env,  only : int8, int16, int32, int64
+implicit none
+integer(kind=int16) :: i,j
+  ! basic usage
+   print *,ieor (16, 1), ' ==> ieor(16,1) has the value 17'
+
+   ! it is easier to see using binary representation
+   i=int(b'0000000000111111',kind=int16)
+   j=int(b'0000001111110000',kind=int16)
+   write(*,'(a,b16.16,1x,i0)')'i=     ',i, i
+   write(*,'(a,b16.16,1x,i0)')'j=     ',j, j
+   write(*,'(a,b16.16,1x,i0)')'result=',ieor(i,j), ieor(i,j)
+
+  ! elemental
+   print *,'arguments may be arrays. If both are arrays they '
+   print *,'must have the same shape.                        '
+   print *,ieor(i=[7,4096,9], j=2)
+
+   ! both may be arrays if of the same size
+
+end program demo_ieor
+
+
+

Results:

+
 >           17  ==> ieor(16,1) has the value 17
+ > i=     0000000000111111 63
+ > j=     0000001111110000 1008
+ > result=0000001111001111 975
+ >  arguments may be arrays. If both are arrays they
+ >  must have the same shape.
+ >            5        4098          11
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +btest(3), +ibclr(3), +ibits(3), +ibset(3), +iand(3), +ior(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ior#

+
+

Name#

+

ior(3) - [BIT:LOGICAL] Bitwise logical inclusive OR

+
+
+

Synopsis#

+
    result = ior(i, j)
+
+
+
     elemental integer(kind=KIND) function ior(i,j)
+
+      integer(kind=KIND ,intent(in) :: i
+      integer(kind=KIND ,intent(in) :: j
+
+
+
+
+

Characteristics#

+
    +
  • i, j and the result shall have the same integer type and kind, +with the exception that one of i or j may be a BOZ constant.

  • +
+
+
+

Description#

+

ior(3) returns the bit-wise Boolean inclusive-or of i and j.

+
+
+

Options#

+
    +
  • +
    i

    one of the pair of values to compare the bits of

    +
    +
    +
  • +
  • +
    j

    one of the pair of values to compare the bits of

    +
    +
    +
  • +
+

If either i or j is a BOZ-literal-constant, it is first converted +as if by the intrinsic function int(3) to type integer with the +kind type parameter of the other.

+
+
+

Result#

+

The result has the value obtained by combining I and J +bit-by-bit according to the following table:

+
          I   J   IOR (I, J)
+          1   1        1
+          1   0        1
+          0   1        1
+          0   0        0
+
+
+

Where if the bit is set in either input value, it is set in the +result. Otherwise the result bit is zero.

+

This is commonly called the “bitwise logical inclusive OR” of the two values.

+
+
+

Examples#

+

Sample program:

+
program demo_ior
+implicit none
+integer :: i, j, k
+   i=53       ! i=00110101 binary (lowest order byte)
+   j=45       ! j=00101101 binary (lowest order byte)
+   k=ior(i,j) ! k=00111101 binary (lowest order byte), k=61 decimal
+   write(*,'(i8,1x,b8.8)')i,i,j,j,k,k
+end program demo_ior
+
+
+

Results:

+
         53 00110101
+         45 00101101
+         61 00111101
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ieor(3), +ibclr(3), +not(3), +btest(3), +ibclr(3), +ibits(3), +ibset(3), +iand(3), +ieor(3), +mvbits(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

not#

+
+

Name#

+

not(3) - [BIT:LOGICAL] Logical negation; flips all bits in an integer

+
+
+

Synopsis#

+
    result = not(i)
+
+
+
    elemental integer(kind=KIND) function not(i)
+
+     integer(kind=KIND), intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i may be an integer of any valid kind

  • +
  • The returned integer is of the same kind as the argument i.

  • +
+
+
+

Description#

+

not(3) returns the bitwise Boolean inverse of i. This is also +known as the “Bitwise complement” or “Logical negation” of the value.

+

If an input bit is a one, that position is a zero on output. Conversely +any input bit that is zero is a one on output.

+
+
+

Options#

+
    +
  • +
    i

    The value to flip the bits of.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has the value obtained by complementing i bit-by-bit +according to the following truth table:

+
   >    I   |  NOT(I)
+   >    ----#----------
+   >    1   |   0
+   >    0   |   1
+
+
+

That is, every input bit is flipped.

+
+
+

Examples#

+

Sample program

+
program demo_not
+implicit none
+integer :: i
+  ! basics
+   i=-13741
+   print *,'the input value',i,'represented in bits is'
+   write(*,'(1x,b32.32,1x,i0)') i, i
+   i=not(i)
+   print *,'on output it is',i
+   write(*,'(1x,b32.32,1x,i0)') i, i
+   print *, " on a two's complement machine flip the bits and add 1"
+   print *, " to get the value with the sign changed, for example."
+   print *, 1234, not(1234)+1
+   print *, -1234, not(-1234)+1
+   print *, " of course 'x=-x' works just fine and more generally."
+end program demo_not
+
+
+

Results:

+
    the input value      -13741 represented in bits is
+    11111111111111111100101001010011 -13741
+    on output it is       13740
+    00000000000000000011010110101100 13740
+     on a two's complement machine flip the bits and add 1
+     to get the value with the sign changed, for example.
+           1234       -1234
+          -1234        1234
+     of course 'x=-x' works just fine and more generally.
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

iand(3), +ior(3), +ieor(3), +ibits(3), +ibset(3),

+

ibclr(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ishftc#

+
+

Name#

+

ishftc(3) - [BIT:SHIFT] Shift rightmost bits circularly, AKA. a logical shift

+
+
+

Synopsis#

+
    result = ishftc( i, shift [,size] )
+
+
+
     elemental integer(kind=KIND) function ishftc(i, shift, size)
+
+      integer(kind=KIND),intent(in)        :: i
+      integer(kind=**),intent(in)          :: shift
+      integer(kind=**),intent(in),optional :: size
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i may be an integer of any kind

  • +
  • shift and size may be integers of any kind

  • +
  • the kind for i dictates the kind of the returned value.

  • +
+
+
+

Description#

+

ishftc(3) circularly shifts just the specified rightmost bits of +an integer.

+

ishftc(3) returns a value corresponding to i with the rightmost +size bits shifted circularly shift places; that is, bits +shifted out one end of the section are shifted into the opposite end +of the section.

+

A value of shift greater than zero corresponds to a left shift, +a value of zero corresponds to no shift, and a value less than zero +corresponds to a right shift.

+
+
+

Options#

+
    +
  • +
    i

    The value specifying the pattern of bits to shift

    +
    +
    +
  • +
  • +
    shift

    If shift is positive, the shift is to the left; if shift +is negative, the shift is to the right; and if shift is zero, +no shift is performed.

    +
    +
    +

    The absolute value of shift must be less than size (simply +put, the number of positions to shift must be less than or equal to +the number of bits specified to be shifted).

    +
  • +
  • +
    size

    The value must be greater than zero and less than or equal to +bit_size(i).

    +
    +
    +

    The default if bit_size(i) is absent is to circularly shift the +entire value i.

    +
  • +
+
+
+

Result#

+

The result characteristics (kind, shape, size, rank, …) are the +same as i.

+

The result has the value obtained by shifting the size rightmost +bits of i circularly by shift positions.

+

No bits are lost.

+

The unshifted bits are unaltered.

+
+
+

Examples#

+

Sample program:

+
program demo_ishftc
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer             :: i
+character(len=*),parameter :: g='(b32.32,1x,i0)'
+  ! basics
+   write(*,*) ishftc(3, 1),' <== typically should have the value 6'
+
+   print *, 'lets start with this:'
+   write(*,'(b32.32)')huge(0)
+   print *, 'shift the value by various amounts, negative and positive'
+   do i= -bit_size(0), bit_size(0), 8
+      write(*,g) ishftc(huge(0),i), i
+   enddo
+  print *,'elemental'
+  i=huge(0)
+  write(*,*)ishftc(i,[2,3,4,5])
+  write(*,*)ishftc([2**1,2**3,-2**7],3)
+  print *,'note the arrays have to conform when elemental'
+  write(*,*)ishftc([2**1,2**3,-2**7],[5,20,0])
+
+end program demo_ishftc
+
+
+

Results:

+
 >            6  <== typically should have the value 6
+ >  lets start with this:
+ > 01111111111111111111111111111111
+ >  shift the value by various amounts, negative and positive
+ > 01111111111111111111111111111111 -32
+ > 11111111111111111111111101111111 -24
+ > 11111111111111110111111111111111 -16
+ > 11111111011111111111111111111111 -8
+ > 01111111111111111111111111111111 0
+ > 11111111111111111111111101111111 8
+ > 11111111111111110111111111111111 16
+ > 11111111011111111111111111111111 24
+ > 01111111111111111111111111111111 32
+ >  elemental
+ >           -3          -5          -9         -17
+ >           16          64       -1017
+ >  note the arrays have to conform when elemental
+ >           64     8388608        -128
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • ishft(3) - Logical shift of bits in an integer

  • +
  • shifta(3) - Right shift with fill

  • +
  • shiftl(3) - Shift bits left

  • +
  • shiftr(3) - Combined right shift of the bits of two int…

  • +
  • dshiftl(3) - Combined left shift of the bits of two inte…

  • +
  • dshiftr(3) - Combined right shift of the bits of two int…

  • +
  • cshift(3) - Circular shift elements of an array

  • +
  • eoshift(3) - End-off shift elements of an array

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ishft#

+
+

Name#

+

ishft(3) - [BIT:SHIFT] Logical shift of bits in an integer

+
+
+

Synopsis#

+
    result = ishftc( i, shift )
+
+
+
     elemental integer(kind=KIND) function ishft(i, shift )
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer of any kind. the kind for i dictates the kind of the returned value.

  • +
  • shift is an integer of any kind.

  • +
+
+
+

Description#

+

ishft(3) returns a value corresponding to i with all of the +bits shifted shift places left or right as specified by the sign +and magnitude of shift.

+

Bits shifted out from the left end or right end are lost; zeros are +shifted in from the opposite end.

+
+
+

Options#

+
    +
  • +
    i

    The value specifying the pattern of bits to shift

    +
    +
    +
  • +
  • +
    shift

    A value of shift greater than zero corresponds to a left shift, +a value of zero corresponds to no shift, and a value less than zero +corresponds to a right shift.

    +
    +
    +

    If the absolute value of shift is +greater than bit_size(i), the value is undefined.

    +
  • +
+
+
+

Result#

+

The result has the value obtained by shifting the bits of i by shift positions.

+
    +
  1. If shift is positive, the shift is to the left

  2. +
  3. if shift is negative, the shift is to the right

  4. +
  5. if shift is zero, no shift is performed.

  6. +
+

Bits shifted out from the left or from the right, as appropriate, +are lost. Zeros are shifted in from the opposite end.

+
+
+

Examples#

+

Sample program:

+
program demo_ishft
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer             :: shift
+character(len=*),parameter :: g='(b32.32,1x,i0)'
+
+   write(*,*) ishft(3, 1),' <== typically should have the value 6'
+
+   shift=4
+   write(*,g) ishft(huge(0),shift), shift
+   shift=0
+   write(*,g) ishft(huge(0),shift), shift
+   shift=-4
+   write(*,g) ishft(huge(0),shift), shift
+end program demo_ishft
+
+
+

Results:

+
>              6  <== typically should have the value 6
+>   11111111111111111111111111110000 4
+>   01111111111111111111111111111111 0
+>   00000111111111111111111111111111 -4
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ishftc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

shifta#

+
+

Name#

+

shifta(3) - [BIT:SHIFT] Right shift with fill

+
+
+

Synopsis#

+
    result = shifta(i, shift )
+
+
+
     elemental integer(kind=KIND) function shifta(i, shift)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer of any kind

  • +
  • shift is an integer of any kind

  • +
  • the result will automatically be of the same type, kind and rank as i.

  • +
+
+
+

Description#

+

shifta(3) returns a value corresponding to i with all of the +bits shifted right by shift places and the vacated bits on the +left filled with the value of the original left-most bit.

+
+
+

Options#

+
    +
  • +
    i

    The initial value to shift and fill

    +
    +
    +
  • +
  • +
    shift

    how many bits to shift right. +It shall be nonnegative and less than or equal to bit_size(i). +or the value is undefined. If shift is zero the result is i.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has the value obtained by shifting the bits of i to +the right shift bits and replicating the leftmost bit of i +in the left shift bits (Note the leftmost bit in “two’s complement” +representation is the sign bit).

+

Bits shifted out from the right end are lost.

+

If shift is zero the result is i.

+
+
+

Examples#

+

Sample program:

+
program demo_shifta
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer(kind=int32) :: ival
+integer             :: shift
+integer(kind=int32) :: oval
+integer(kind=int32),allocatable :: ivals(:)
+integer             :: i
+integer(kind=int8)  :: arr(2,2)=reshape([2,4,8,16],[2,2])
+
+  ! basic usage
+  write(*,*)shifta(100,3)
+
+  ! loop through some interesting values
+   shift=5
+
+   ivals=[ -1, -0, +0, +1, &
+   & int(b"01010101010101010101010101010101"), &
+   & int(b"10101010101010101010101010101010"), &
+   & int(b"00000000000000000000000000011111") ]
+
+   ! does your platform distinguish between +0 and -0?
+   ! note the original leftmost bit is used to fill in the vacated bits
+
+   write(*,'(/,"SHIFT =  ",i0)') shift
+   do i=1,size(ivals)
+      ival=ivals(i)
+      write(*,'(  "I =      ",b32.32," == ",i0)') ival,ival
+      oval=shifta(ival,shift)
+      write(*,'(  "RESULT = ",b32.32," == ",i0)') oval,oval
+   enddo
+   ! elemental
+   write(*,*)"characteristics of the result are the same as input"
+   write(*,'(*(g0,1x))') &
+     & "kind=",kind(shifta(arr,3)), "shape=",shape(shifta(arr,3)), &
+     & "size=",size(shifta(arr,3)) !, "rank=",rank(shifta(arr,3))
+
+end program demo_shifta
+
+
+

Results:

+
 >           12
+ >
+ > SHIFT =  5
+ > I =      11111111111111111111111111111111 == -1
+ > RESULT = 11111111111111111111111111111111 == -1
+ > I =      00000000000000000000000000000000 == 0
+ > RESULT = 00000000000000000000000000000000 == 0
+ > I =      00000000000000000000000000000000 == 0
+ > RESULT = 00000000000000000000000000000000 == 0
+ > I =      00000000000000000000000000000001 == 1
+ > RESULT = 00000000000000000000000000000000 == 0
+ > I =      01010101010101010101010101010101 == 1431655765
+ > RESULT = 00000010101010101010101010101010 == 44739242
+ > I =      10101010101010101010101010101010 == -1431655766
+ > RESULT = 11111101010101010101010101010101 == -44739243
+ > I =      00000000000000000000000000011111 == 31
+ > RESULT = 00000000000000000000000000000000 == 0
+ >  characteristics of the result are the same as input
+ > kind= 1 shape= 2 2 size= 4
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

shiftl(3), +shiftr(3), +ishft(3), +ishftc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

shiftl#

+
+

Name#

+

shiftl(3) - [BIT:SHIFT] Shift bits left

+
+
+

Synopsis#

+
    result = shiftl( i, shift )
+
+
+
     elemental integer(kind=KIND) function shiftl(i, shift)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer of any kind

  • +
  • shift is an integer of any kind

  • +
  • the result will automatically be of the same type, kind and rank as i.

  • +
+
+
+

Description#

+

shiftl(3) returns a value corresponding to i with all of the +bits shifted left by shift places.

+

Bits shifted out from the left end are lost, and bits shifted in from +the right end are set to 0.

+

If the absolute value of shift is greater than bit_size(i), +the value is undefined.

+

For example, for a 16-bit integer left-shifted five …

+
    >  |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p| <- original 16-bit example
+    >  |f|g|h|i|j|k|l|m|n|o|p|           <- left-shifted five
+    >  |f|g|h|i|j|k|l|m|n|o|p|0|0|0|0|0| <- right-padded with zeros
+
+
+

Note the value of the result is the same as ishft (i, shift).

+
+
+

Options#

+
    +
  • +
    i

    The initial value to shift and fill in with zeros

    +
    +
    +
  • +
  • +
    shift

    how many bits to shift left. +It shall be nonnegative and less than or equal to bit_size(i).

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer and of the same kind as i.

+
+
+

Examples#

+

Sample program:

+
program demo_shiftl
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer             :: shift
+integer(kind=int32) :: oval
+integer(kind=int32) :: ival
+integer(kind=int32),allocatable :: ivals(:)
+integer             :: i
+
+  print *, ' basic usage'
+  ival=100
+  write(*,*)ival, shiftl(ival,3)
+
+ ! elemental (input values may be conformant arrays)
+  print *, ' elemental'
+
+ ! loop through some ivalues
+   shift=9
+   ivals=[ &
+   & int(b"01010101010101010101010101010101"), &
+   & int(b"10101010101010101010101010101010"), &
+   & int(b"11111111111111111111111111111111") ]
+
+   write(*,'(/,"SHIFT =  ",i0)') shift
+   do i=1,size(ivals)
+      ! print initial value as binary and decimal
+      write(*,'(  "I =      ",b32.32," == ",i0)') ivals(i),ivals(i)
+      ! print shifted value as binary and decimal
+      oval=shiftl(ivals(i),shift)
+      write(*,'(  "RESULT = ",b32.32," == ",i0)') oval,oval
+   enddo
+
+  ! more about elemental
+   ELEM : block
+   integer(kind=int8)  :: arr(2,2)=reshape([2,4,8,16],[2,2])
+   write(*,*)"characteristics of the result are the same as input"
+   write(*,'(*(g0,1x))') &
+     & "kind=",kind(shiftl(arr,3)), "shape=",shape(shiftl(arr,3)), &
+     & "size=",size(shiftl(arr,3)) !, "rank=",rank(shiftl(arr,3))
+   endblock ELEM
+
+end program demo_shiftl
+
+
+

Results:

+
 >    basic usage
+ >           100         800
+ >    elemental
+ >
+ >  SHIFT =  9
+ >  I =      01010101010101010101010101010101 == 1431655765
+ >  RESULT = 10101010101010101010101000000000 == -1431655936
+ >  I =      10101010101010101010101010101010 == -1431655766
+ >  RESULT = 01010101010101010101010000000000 == 1431655424
+ >  I =      11111111111111111111111111111111 == -1
+ >  RESULT = 11111111111111111111111000000000 == -512
+ >   characteristics of the result are the same as input
+ >  kind= 1 shape= 2 2 size= 4
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

shifta(3), +shiftr(3), +ishft(3), +ishftc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

shiftr#

+
+

Name#

+

shiftr(3) - [BIT:SHIFT] Shift bits right

+
+
+

Synopsis#

+
    result = shiftr( i, shift )
+
+
+
     elemental integer(kind=KIND) function shiftr(i, shift)
+
+      integer(kind=KIND),intent(in) :: i
+      integer(kind=**),intent(in) :: shift
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer of any kind

  • +
  • shift is an integer of any kind

  • +
  • the result will automatically be of the same type, kind and rank as i.

  • +
+
+
+

Description#

+

shiftr(3) returns a value corresponding to i with all of the +bits shifted right by shift places.

+

If the absolute value of shift is greater than bit_size(i), +the value is undefined.

+

Bits shifted out from the right end are lost, and bits shifted in from +the left end are set to 0.

+

For example, for a 16-bit integer right-shifted five …

+
    >  |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p| <- original 16-bit example
+    >            |a|b|c|d|e|f|g|h|i|j|k| <- right-shifted five
+    >  |0|0|0|0|0|f|g|h|i|j|k|l|m|n|o|p| <- left-padded with zeros
+
+
+

Note the value of the result is the same as ishft (i, -shift).

+
+
+

Options#

+
    +
  • +
    i

    The value to shift

    +
    +
    +
  • +
  • +
    shift

    How many bits to shift right. +It shall be nonnegative and less than or equal to bit_size(i).

    +
    +
    +
  • +
+
+
+

Result#

+

The remaining bits shifted right shift positions. +Vacated positions on the left are filled with zeros.

+
+
+

Examples#

+

Sample program:

+
program demo_shiftr
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer             :: shift
+integer(kind=int32) :: oval
+integer(kind=int32) :: ival
+integer(kind=int32),allocatable :: ivals(:)
+integer             :: i
+
+  print *,' basic usage'
+  ival=100
+  write(*,*)ival, shiftr(100,3)
+
+  ! elemental (input values may be conformant arrays)
+  print *,' elemental'
+   shift=9
+   ivals=[ &
+   & int(b"01010101010101010101010101010101"), &
+   & int(b"10101010101010101010101010101010"), &
+   & int(b"11111111111111111111111111111111") ]
+
+   write(*,'(/,"SHIFT =  ",i0)') shift
+   do i=1,size(ivals)
+      ! print initial value as binary and decimal
+      write(*,'(  "I =      ",b32.32," == ",i0)') ivals(i),ivals(i)
+      ! print shifted value as binary and decimal
+      oval=shiftr(ivals(i),shift)
+      write(*,'(  "RESULT = ",b32.32," == ",i0,/)') oval,oval
+   enddo
+
+   ! more on elemental
+   ELEM : block
+   integer(kind=int8)  :: arr(2,2)=reshape([2,4,8,16],[2,2])
+   write(*,*)"characteristics of the result are the same as input"
+   write(*,'(*(g0,1x))') &
+     & "kind=",kind(shiftr(arr,3)), "shape=",shape(shiftr(arr,3)), &
+     & "size=",size(shiftr(arr,3)) !, "rank=",rank(shiftr(arr,3))
+   endblock ELEM
+
+end program demo_shiftr
+
+
+

Results:

+
  >    basic usage
+  >           100          12
+  >    elemental
+  >
+  >  SHIFT =  9
+  >  I =      01010101010101010101010101010101 == 1431655765
+  >  RESULT = 00000000001010101010101010101010 == 2796202
+  >
+  >  I =      10101010101010101010101010101010 == -1431655766
+  >  RESULT = 00000000010101010101010101010101 == 5592405
+  >
+  >  I =      11111111111111111111111111111111 == -1
+  >  RESULT = 00000000011111111111111111111111 == 8388607
+  >
+  >   characteristics of the result are the same as input
+  >  kind= 1 shape= 2 2 size= 4
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

shifta(3), +shiftl(3), +ishft(3), +ishftc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/cfi/index.html b/learn/intrinsics/cfi/index.html new file mode 100644 index 000000000000..3c40092fee1a --- /dev/null +++ b/learn/intrinsics/cfi/index.html @@ -0,0 +1,1631 @@ + + + + + + + + + Procedures for binding to C interfaces — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Procedures for binding to C interfaces#

+
+

c_associated#

+
+

Name#

+

c_associated(3) - [ISO_C_BINDING] Status of a C pointer

+
+
+

Synopsis#

+
    result = c_associated(c_prt_1, [c_ptr_2] )
+
+
+
     logical function c_associated(c_prt_1, cptr_2)
+
+      TYPE,intent(in) ::c_ptr_1
+      TYPE,intent(in),optional ::c_ptr_2
+
+
+
+
+

Characteristics#

+
    +
  • c_ptr_1 is a scalar of the type c_ptr or c_funptr.

  • +
  • c_ptr_2 is a scalar of the same type as c_ptr_1.

  • +
  • The return value is of type logical

  • +
+
+
+

Description#

+

c_associated(3) determines the status of the +C pointer c_ptr_1 or if c_ptr_1 is associated with the target +c_ptr_2.

+
+
+

Options#

+
    +
  • +
    c_ptr_1

    C pointer to test for being a C NULL pointer, or to test if +pointing to the same association as c_ptr_2 when present.

    +
    +
    +
  • +
  • +
    c_ptr_2

    C pointer to test for shared association with c_ptr_1

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type logical; it is .false. if either c_ptr_1 +is a C NULL pointer or if c_ptr1 and c_ptr_2 point to different +addresses.

+
+
+

Examples#

+

Sample program:

+
program demo_c_associated
+
+contains
+
+subroutine association_test(a,b)
+use iso_c_binding, only: c_associated, c_loc, c_ptr
+implicit none
+real, pointer :: a
+type(c_ptr) :: b
+   if(c_associated(b, c_loc(a))) &
+      stop 'b and a do not point to same target'
+end subroutine association_test
+
+end program demo_c_associated
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

c_loc(3), +c_funloc(3), +iso_c_binding(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

c_f_pointer#

+
+

Name#

+

c_f_pointer(3) - [ISO_C_BINDING] Convert C into Fortran pointer

+
+
+

Synopsis#

+
    call c_f_pointer(cptr, fptr [,shape] )
+
+
+
     subroutine c_f_pointer(cptr, fptr ,shape )
+
+      type(c_ptr),intent(in) :: cprt
+      type(TYPE),pointer,intent(out) :: fprt
+      integer,intent(in),optional :: shape(:)
+
+
+
+
+

Characteristics#

+

The Fortran pointer fprt must be interoperable with cptr

+

shape is only specified if fptr is an array.

+
+
+

Description#

+

c_f_pointer(3) assigns the target (the C pointer cptr) to the +Fortran pointer fptr and specifies its shape if fptr points to +an array.

+
+
+

Options#

+
    +
  • +
    cptr

    scalar of the type c_ptr. It is intent(in).

    +
    +
    +
  • +
  • +
    fptr

    pointer interoperable with cptr. it is intent(out).

    +
    +
    +
  • +
  • +
    shape

    (Optional) Rank-one array of type integer with intent(in) . +It shall be present if and only if fptr is an array. The size +must be equal to the rank of fptr.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_c_f_pointer
+use iso_c_binding
+implicit none
+interface
+   subroutine my_routine(p) bind(c,name='myC_func')
+      import :: c_ptr
+      type(c_ptr), intent(out) :: p
+   end subroutine
+end interface
+type(c_ptr) :: cptr
+real,pointer :: a(:)
+   call my_routine(cptr)
+   call c_f_pointer(cptr, a, [12])
+end program demo_c_f_pointer
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

c_loc(3), +c_f_procpointer(3), +iso_c_binding(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

c_f_procpointer#

+
+

Name#

+

c_f_procpointer(3) - [ISO_C_BINDING] Convert C into Fortran procedure pointer

+
+
+

Synopsis#

+
    call c_f_procpointer(cptr, fptr)
+
+
+
     subroutine c_f_procpointer(cptr, fptr )
+
+      type(c_funptr),intent(in) :: cprt
+      type(TYPE),pointer,intent(out) :: fprt
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

c_f_procpointer(3) assigns the target of the C function +pointer cptr to the Fortran procedure pointer fptr.

+
+
+

Options#

+
    +
  • +
    cptr

    scalar of the type c_funptr. It is intent(in).

    +
    +
    +
  • +
  • +
    fptr

    procedure pointer interoperable with cptr. It is intent(out).

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_c_f_procpointer
+use iso_c_binding
+implicit none
+abstract interface
+   function func(a)
+   import :: c_float
+   real(c_float), intent(in) :: a
+   real(c_float) :: func
+   end function
+end interface
+interface
+   function getIterFunc() bind(c,name="getIterFunc")
+   import :: c_funptr
+   type(c_funptr) :: getIterFunc
+   end function
+end interface
+type(c_funptr) :: cfunptr
+procedure(func), pointer :: myFunc
+   cfunptr = getIterFunc()
+   call c_f_procpointer(cfunptr, myFunc)
+end program demo_c_f_procpointer
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

c_loc(3), +c_f_pointer(3), +iso_c_binding(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

c_funloc#

+
+

Name#

+

c_funloc(3) - [ISO_C_BINDING] Obtain the C address of a procedure

+
+
+

Synopsis#

+
    result = c_funloc(x)
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

c_funloc(3) determines the C address of the argument.

+
+
+

Options#

+
    +
  • +
    x

    Interoperable function or pointer to such function.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type c_funptr and contains the C address of the +argument.

+
+
+

Examples#

+

Sample program:

+
! program demo_c_funloc and module
+module x
+use iso_c_binding
+implicit none
+contains
+subroutine sub(a) bind(c)
+real(c_float) :: a
+   a = sqrt(a)+5.0
+end subroutine sub
+end module x
+!
+program demo_c_funloc
+use iso_c_binding
+use x
+implicit none
+interface
+   subroutine my_routine(p) bind(c,name='myC_func')
+     import :: c_funptr
+     type(c_funptr), intent(in) :: p
+   end subroutine
+end interface
+   call my_routine(c_funloc(sub))
+!
+end program demo_c_funloc
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

c_associated(3), +c_loc(3), +c_f_pointer(3),

+

c_f_procpointer(3), +iso_c_binding(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

c_loc#

+
+

Name#

+

c_loc(3) - [ISO_C_BINDING] Obtain the C address of an object

+
+
+

Synopsis#

+
    result = c_loc(x)
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

c_loc(3) determines the C address of the argument.

+
+
+

Options#

+
    +
  • +
    x

    Shall have either the pointer or target attribute. It shall not be a +coindexed object. It shall either be a variable with interoperable +type and kind type parameters, or be a scalar, nonpolymorphic +variable with no length type parameters.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type c_ptr and contains the C address of the +argument.

+
+
+

Examples#

+

Sample program:

+
   subroutine association_test(a,b)
+   use iso_c_binding, only: c_associated, c_loc, c_ptr
+   implicit none
+   real, pointer :: a
+   type(c_ptr) :: b
+     if(c_associated(b, c_loc(a))) &
+        stop 'b and a do not point to same target'
+   end subroutine association_test
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

c_associated(3), +c_funloc(3), +c_f_pointer(3),

+

c_f_procpointer(3), +iso_c_binding(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

c_sizeof#

+
+

Name#

+

c_sizeof(3) - [ISO_C_BINDING] Size in bytes of an expression

+
+
+

Synopsis#

+
    result = c_sizeof(x)
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

c_sizeof(3) calculates the number of bytes of storage the +expression x occupies.

+
+
+

Options#

+
    +
  • +
    x

    The argument shall be an interoperable data entity.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer and of the system-dependent kind +csize_t (from the iso_c_binding module). Its value is the +number of bytes occupied by the argument. If the argument has the +pointer attribute, the number of bytes of the storage area pointed to is +returned. If the argument is of a derived type with pointer or +allocatable components, the return value does not account for the sizes +of the data pointed to by these components.

+
+
+

Examples#

+

Sample program:

+
program demo_c_sizeof
+use iso_c_binding
+implicit none
+real(c_float) :: r, s(5)
+   print *, (c_sizeof(s)/c_sizeof(r) == 5)
+end program demo_c_sizeof
+
+
+

Results:

+
    T
+
+
+

The example will print .true. unless you are using a platform where +default real variables are unusually padded.

+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

storage_size(3)

+

fortran-lang intrinsic descriptions

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/character/index.html b/learn/intrinsics/character/index.html new file mode 100644 index 000000000000..a0130e8fb22a --- /dev/null +++ b/learn/intrinsics/character/index.html @@ -0,0 +1,4724 @@ + + + + + + + + + Basic procedures for manipulating character variables — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Basic procedures for manipulating character variables#

+
+

len#

+
+

Name#

+

len(3) - [CHARACTER] Length of a character entity

+
+
+

Synopsis#

+
    result = len(string [,kind])
+
+
+
     integer(kind=KIND) function len(string,KIND)
+
+      character(len=*),intent(in) :: string(..)
+      integer,optional,intent(in) :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • string is a scalar or array character variable

  • +
  • KIND is a scalar integer constant expression.

  • +
  • the returned value is the same integer kind as the kind +argument, or of the default integer kind if kind is not specified.

  • +
+
+
+

Description#

+

len(3) returns the length of a character string.

+

If string is an array, the length of a single element of string +is returned, as all elements of an array are the same length.

+

Note that string need not be defined when this intrinsic is invoked, +as only the length (not the content) of string is needed.

+
+
+

Options#

+
    +
  • +
    string

    A scalar or array string to return the length of. +If it is an unallocated allocatable variable or a pointer that is +not associated, its length type parameter shall not be deferred.

    +
    +
    +
  • +
  • +
    kind

    A constant indicating the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to the number of characters in STRING +if it is scalar or in an element of STRING if it is an array.

+
+
+

Examples#

+

Sample program

+
program demo_len
+implicit none
+
+! fixed length
+character(len=40) :: string
+! allocatable length
+character(len=:),allocatable :: astring
+character(len=:),allocatable :: many_strings(:)
+integer :: ii
+  ! BASIC USAGE
+   ii=len(string)
+   write(*,*)'length =',ii
+
+  ! ALLOCATABLE VARIABLE LENGTH CAN CHANGE
+  ! the allocatable string length will be the length of RHS expression
+   astring=' How long is this allocatable string? '
+   write(*,*)astring, ' LEN=', len(astring)
+  ! print underline
+   write(*,*) repeat('=',len(astring))
+  ! assign new value to astring and length changes
+   astring='New allocatable string'
+   write(*,*)astring, ' LEN=', len(astring)
+  ! print underline
+   write(*,*) repeat('=',len(astring))
+
+  ! THE STRING LENGTH WILL BE CONSTANT FOR A FIXED-LENGTH VARIABLE
+   string=' How long is this fixed string? '
+   write(*,*)string,' LEN=',len(string)
+   string='New fixed string '
+   write(*,*)string,' LEN=',len(string)
+
+  ! ALL STRINGS IN AN ARRAY ARE THE SAME LENGTH
+  ! a scalar is returned for an array, as all values in a Fortran
+  ! character array must be of the same length.
+   many_strings = [ character(len=7) :: 'Tom', 'Dick', 'Harry' ]
+   write(*,*)'length of ALL elements of array=',len(many_strings)
+
+  ! NAME%LEN IS ESSENTIALLY THE SAME AS LEN(NAME)
+  ! you can also query the length (and other attributes) of a string
+  ! using a "type parameter inquiry" (available since fortran 2018)
+   write(*,*)'length from type parameter inquiry=',string%len
+  ! %len is equivalent to a call to LEN() except the kind of the integer
+  ! value returned is always of default kind.
+
+  ! LOOK AT HOW A PASSED STRING CAN BE USED ...
+   call passed(' how long? ')
+
+contains
+
+   subroutine passed(str)
+   character(len=*),intent(in)  :: str
+   ! the length of str can be used in the definitions of variables
+      ! you can query the length of the passed variable
+      write(*,*)'length of passed value is ', LEN(str)
+   end subroutine passed
+
+end program demo_len
+
+
+

Results:

+
 >  length =          40
+ >   How long is this allocatable string?  LEN=          38
+ >  ======================================
+ >  New allocatable string LEN=          22
+ >  ======================
+ >   How long is this fixed string?          LEN=          40
+ >  New fixed string                         LEN=          40
+ >  length of ALL elements of array=           7
+ >  length from type parameter inquiry=          40
+ >  length of passed value is           11
+
+
+
+
+

Standard#

+

FORTRAN 77 ; with kind argument - Fortran 2003

+
+
+

See Also#

+

len_trim(3), adjustr(3), trim(3), and adjustl(3) are related routines that +allow you to deal with leading and trailing blanks.

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

new_line#

+
+

Name#

+

new_line(3) - [CHARACTER:INQUIRY] Newline character

+
+
+

Synopsis#

+
    result = new_line(c)
+
+
+
     character(len=1,kind=KIND) function new_line(c)
+
+      character(len=1,kind=KIND),intent(in) :: c(..)
+
+
+
+
+

Characteristics#

+
    +
  • c shall be of type character. It may be a scalar or an array.

  • +
  • the result is a character scalar of length one with the same kind type parameter as c.

  • +
+
+
+

Description#

+

new_line(3) returns the newline character.

+

Normally, newlines are generated with regular formatted I/O statements like +WRITE() and PRINT() when each statement completes:

+
   print *, 'x=11'
+   print *
+   print *, 'y=22'
+   end
+
+
+

produces: +x=11

+
y=22
+
+
+
Alternatively, a "/" descriptor in a format is used to generate a
+newline on the output. For example:
+```fortran
+   write(*,'(a,1x,i0,/,a)') 'x =',11,'is the answer'
+   end
+
+
+

produces:

+
   x = 11
+   is the answer
+
+
+

Also, for formatted sequential output if more data is listed on the +output statement than can be represented by the format statement a +newline is generated and then the format is reused until the output +list is exhausted.

+
   write(*,'(a,"=",i0)') 'x', 10, 'y', 20
+   end
+
+
+

produces

+
   x=10
+   y=20
+
+
+

But there are occasions, particularly when non-advancing I/O or stream +I/O is being generated (which does not generate a newline at the end +of each WRITE statement, as normally occurs) where it is preferable to +place a newline explicitly in the output at specified points.

+

To do so you must make sure you are generating the correct newline +character, which the techniques above do automatically.

+

The newline character varies between some platforms, and can even +depend on the encoding (ie. which character set is being used) of the +output file. In these cases selecting the correct character to output +can be determined by the new_line(3) procedure.

+
+
+

Options#

+
    +
  • +
    c

    an arbitrary character whose kind is used to decide on the output +character that represents a newline.

    +
    +
    +
  • +
+
+
+

Result#

+
+
Case (i)

If a is default character and the character in position 10 +of the ASCII collating sequence is representable in the default +character set, then the result is achar(10).

+
+
+

This is the typical case, and just requires using “new_line(‘a’)”.

+
+
Case (ii)

If a is an ASCII character or an ISO 10646 character, then the +result is char(10, kind (a)).

+
+
Case (iii)

Otherwise, the result is a processor-dependent character that +represents a newline in output to files connected for formatted +stream output if there is such a character.

+
+
Case (iv)

If not of the previous cases apply, the result is the blank character.

+
+
+
+
+

Examples#

+

Sample program:

+
program demo_new_line
+implicit none
+character,parameter :: nl=new_line('a')
+character(len=:),allocatable :: string
+real :: r
+integer :: i, count
+
+  ! basics
+   ! print a string with a newline embedded in it
+   string='This is record 1.'//nl//'This is record 2.'
+   write(*,'(a)') string
+
+   ! print a newline character string
+   write(*,'(*(a))',advance='no') &
+      nl,'This is record 1.',nl,'This is record 2.',nl
+
+   ! output a number of words of random length as a paragraph
+   ! by inserting a new_line before line exceeds 70 characters
+
+  ! simplistic paragraph print using non-advancing I/O
+   count=0
+   do i=1,100
+
+      ! make some fake word of random length
+      call random_number(r)
+      string=repeat('x',int(r*10)+1)
+
+      count=count+len(string)+1
+      if(count.gt.70)then
+         write(*,'(a)',advance='no')nl
+         count=len(string)+1
+      endif
+      write(*,'(1x,a)',advance='no')string
+   enddo
+   write(*,'(a)',advance='no')nl
+
+end program demo_new_line
+
+
+

Results:

+
   This is record 1.
+   This is record 2.
+
+   This is record 1.
+   This is record 2.
+    x x xxxx xxxxxxx xxxxxxxxxx xxxxxxxxx xxxx xxxxxxxxxx xxxxxxxx
+    xxxxxxxxx xxxx xxxxxxxxx x xxxxxxxxx xxxxxxxx xxxxxxxx xxxx x
+    xxxxxxxxxx x x x xxxxxx xxxxxxxxxx x xxxxxxxxxx x xxxxxxx xxxxxxxxx
+    xx xxxxxxxxxx xxxxxxxx x xx xxxxxxxxxx xxxxxxxx xxx xxxxxxx xxxxxx
+    xxxxx xxxxxxxxx x xxxxxxxxxx xxxxxx xxxxxxxx xxxxx xxxxxxxx xxxxxxxx
+    xxxxx xxx xxxxxxxx xxxxxxx xxxxxxxx xxx xxxx xxx xxxxxxxx xxxxxx
+    xxxxxxx xxxxxxx xxxxx xxxxx xx xxxxxx xx xxxxxxxxxx xxxxxx x xxxx
+    xxxxxx xxxxxxx x xxx xxxxx xxxxxxxxx xxx xxxxxxx x xxxxxx xxxxxxxxx
+    xxxx xxxxxxxxx xxxxxxxx xxxxxxxx xxx xxxxxxx xxxxxxx xxxxxxxxxx
+    xxxxxxxxxx xxxxxx xxxxx xxxx xxxxxxx xx xxxxxxxxxx xxxxxx xxxxxx
+    xxxxxx xxxx xxxxx
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See also#

+

achar(3), +char(3), +iachar(3), +ichar(3), +selected_char_kind(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

repeat#

+
+

Name#

+

repeat(3) - [CHARACTER] Repeated string concatenation

+
+
+

Synopsis#

+
    result = repeat(string, ncopies)
+
+
+
     character(len=len(string)*ncopies) function repeat(string, ncopies)
+
+      character(len=*),intent(in)   :: string
+      integer(kind=**),intent(in)   :: ncopies
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • string is a scalar character type.

  • +
  • ncopies is a scalar integer.

  • +
  • the result is a new scalar of type character of the same kind as +string

  • +
+
+
+

Description#

+

repeat(3) concatenates copies of a string.

+
+
+

Options#

+
    +
  • +
    string

    The input string to repeat

    +
    +
    +
  • +
  • +
    ncopies

    Number of copies to make of string, greater than or equal to zero (0).

    +
    +
    +
  • +
+
+
+

Result#

+

A new string built up from ncopies copies of string.

+
+
+

Examples#

+

Sample program:

+
program demo_repeat
+implicit none
+    write(*,'(a)') repeat("^v", 35)         ! line break
+    write(*,'(a)') repeat("_", 70)          ! line break
+    write(*,'(a)') repeat("1234567890", 7)  ! number line
+    write(*,'(a)') repeat("         |", 7)  !
+end program demo_repeat
+
+
+

Results:

+
 > ^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
+ > ______________________________________________________________________
+ > 1234567890123456789012345678901234567890123456789012345678901234567890
+ >          |         |         |         |         |         |         |
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

Functions that perform operations on character strings:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

#

+
+

achar#

+
+

Name#

+

achar(3) - [CHARACTER:CONVERSION] Returns a character in a specified position in the ASCII collating sequence

+
+
+

Synopsis#

+
    result = achar(i [,kind])
+
+
+
     elemental character(len=1,kind=KIND) function achar(i,KIND)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • The character kind returned is the value of kind if present. +otherwise, a single default character is returned.

  • +
+
+
+

Description#

+

achar(3) returns the character located at position i (commonly +called the ADE or ASCII Decimal Equivalent) in the ASCII collating +sequence.

+

The achar(3) function is often used for generating in-band escape +sequences to control terminal attributes, as it makes it easy to print +unprintable characters such as escape and tab. For example:

+
   write(*,'(*(a))')achar(27),'[2J'
+
+
+

will clear the screen on an ANSI-compatible terminal display,

+
+
+

Note#

+

The ADEs (ASCII Decimal Equivalents) for ASCII are

+
*-------*-------*-------*-------*-------*-------*-------*-------*
+| 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel|
+| 08 bs | 09 ht | 10 nl | 11 vt | 12 np | 13 cr | 14 so | 15 si |
+| 16 dle| 17 dc1| 18 dc2| 19 dc3| 20 dc4| 21 nak| 22 syn| 23 etb|
+| 24 can| 25 em | 26 sub| 27 esc| 28 fs | 29 gs | 30 rs | 31 us |
+| 32 sp | 33  ! | 34  " | 35  # | 36  $ | 37  % | 38  & | 39  ' |
+| 40  ( | 41  ) | 42  * | 43  + | 44  , | 45  - | 46  . | 47  / |
+| 48  0 | 49  1 | 50  2 | 51  3 | 52  4 | 53  5 | 54  6 | 55  7 |
+| 56  8 | 57  9 | 58  : | 59  ; | 60  < | 61  = | 62  > | 63  ? |
+| 64  @ | 65  A | 66  B | 67  C | 68  D | 69  E | 70  F | 71  G |
+| 72  H | 73  I | 74  J | 75  K | 76  L | 77  M | 78  N | 79  O |
+| 80  P | 81  Q | 82  R | 83  S | 84  T | 85  U | 86  V | 87  W |
+| 88  X | 89  Y | 90  Z | 91  [ | 92  \ | 93  ] | 94  ^ | 95  _ |
+| 96  ` | 97  a | 98  b | 99  c |100  d |101  e |102  f |103  g |
+|104  h |105  i |106  j |107  k |108  l |109  m |110  n |111  o |
+|112  p |113  q |114  r |115  s |116  t |117  u |118  v |119  w |
+|120  x |121  y |122  z |123  { |124  | |125  } |126  ~ |127 del|
+*-------*-------*-------*-------*-------*-------*-------*-------*
+
+
+
+
+

Options#

+
    +
  • +
    i

    the integer value to convert to an ASCII character, in the range +0 to 127.

    +
    +

    achar(3) shall have the value C for any character +C capable of representation as a default character.

    +
    +
    +
  • +
  • +
    kind

    a integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

Assuming i has a value in the range 0 <= I <= 127, the result is the +character in position i of the ASCII collating sequence, provided +the processor is capable of representing that character in the character +kind of the result; otherwise, the result is processor dependent.

+
+
+

Examples#

+

Sample program:

+
program demo_achar
+use,intrinsic::iso_fortran_env,only:int8,int16,int32,int64
+implicit none
+integer :: i
+   i=65
+   write(*,'("decimal     =",i0)')i
+   write(*,'("character   =",a1)')achar(i)
+   write(*,'("binary      =",b0)')achar(i)
+   write(*,'("octal       =",o0)')achar(i)
+   write(*,'("hexadecimal =",z0)')achar(i)
+
+   write(*,'(8(i3,1x,a,1x),/)')(i,achar(i), i=32,126)
+
+   write(*,'(a)')upper('Mixed Case')
+contains
+! a classic use of achar(3) is to convert the case of a string
+
+pure elemental function upper(str) result (string)
+!
+!$@(#) upper(3f): function to return a trimmed uppercase-only string
+!
+! input string to convert to all uppercase
+character(*), intent(in)      :: str
+! output string that contains no miniscule letters
+character(len(str))           :: string
+integer                       :: i, iend
+integer,parameter             :: toupper = iachar('A')-iachar('a')
+   iend=len_trim(str)
+   ! initialize output string to trimmed input string
+   string = str(:iend)
+   ! process each letter in the string
+   do concurrent (i = 1:iend)
+       select case (str(i:i))
+       ! located miniscule letter
+       case ('a':'z')
+          ! change miniscule to majuscule letter
+          string(i:i) = achar(iachar(str(i:i))+toupper)
+       end select
+   enddo
+end function upper
+end program demo_achar
+
+
+

Results:

+
   decimal     =65
+   character   =A
+   binary      =1000001
+   octal       =101
+   hexadecimal =41
+    32    33 !  34 "  35 #  36 $  37 %  38 &  39 '
+
+    40 (  41 )  42 *  43 +  44 ,  45 -  46 .  47 /
+
+    48 0  49 1  50 2  51 3  52 4  53 5  54 6  55 7
+
+    56 8  57 9  58 :  59 ;  60 <  61 =  62 >  63 ?
+
+    64 @  65 A  66 B  67 C  68 D  69 E  70 F  71 G
+
+    72 H  73 I  74 J  75 K  76 L  77 M  78 N  79 O
+
+    80 P  81 Q  82 R  83 S  84 T  85 U  86 V  87 W
+
+    88 X  89 Y  90 Z  91 [  92 \  93 ]  94 ^  95 _
+
+    96 `  97 a  98 b  99 c 100 d 101 e 102 f 103 g
+
+   104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
+
+   112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
+
+   120 x 121 y 122 z 123 { 124 | 125 } 126 ~
+   MIXED CASE
+
+
+
+
+

Standard#

+

FORTRAN 77. KIND argument added Fortran 2003

+
+
+

See Also#

+

char(3), +iachar(3), +ichar(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

char#

+
+

Name#

+

char(3) - [CHARACTER] Generate a character from a code value

+
+
+

Synopsis#

+
    result = char(i [,kind])
+
+
+
     elemental character(kind=KIND) function char(i,KIND)
+
+      integer(kind=**),intent(in) :: i
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • i is an integer of any kind

  • +
  • kind is an integer initialization expression indicating the kind +parameter of the result.

  • +
  • The returned value is a character with the kind specified by kind +or if kind is not present, the default character kind.

  • +
+
+
+

Description#

+

Generates a character value given a numeric code representing the +position i in the collating sequence associated with the specified +kind kind.

+

Note that achar(3) is a similar function specifically for ASCII +characters that is preferred when only ASCII is being processed, +which is equivalent to char(i,kind=selected_char_kind(“ascii”) )

+

The ichar(3) function is the reverse of char(3), converting +characters to their collating sequence value.

+ +
+
+

Options#

+
    +
  • +
    i

    a value in the range 0 <= I <= n-1, where n is the number of characters +in the collating sequence associated with the specified kind type parameter.

    +
    +

    For ASCII, n is 127. The default character set may or may not allow higher +values.

    +
    +
    +
  • +
  • +
    kind

    A constant integer initialization expression indicating the kind +parameter of the result. If not present, the default kind is assumed.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is a single character of the specified kind, determined by the +position of i in the collating sequence associated with the specified kind.

+
+
+

Examples#

+

Sample program:

+
program demo_char
+implicit none
+integer, parameter :: ascii =  selected_char_kind ("ascii")
+character(len=1, kind=ascii ) :: c
+integer :: i
+  ! basic
+   i=74
+   c=char(i)
+   write(*,*)'ASCII character ',i,'is ',c
+  !
+   print *, 'a selection of ASCII characters (shows hex if not printable)'
+   do i=0,127,10
+      c = char(i,kind=ascii)
+      select case(i)
+      case(32:126)
+         write(*,'(i3,1x,a)')i,c
+      case(0:31,127)
+         ! print hexadecimal value for unprintable characters
+         write(*,'(i3,1x,z2.2)')i,c
+      case default
+         write(*,'(i3,1x,a,1x,a)')i,c,'non-standard ASCII'
+      end select
+   enddo
+
+end program demo_char
+
+
+

Results:

+
    ASCII character           74 is J
+    a selection of ASCII characters (shows hex if not printable)
+     0 00
+    10 0A
+    20 14
+    30 1E
+    40 (
+    50 2
+    60 <
+    70 F
+    80 P
+    90 Z
+   100 d
+   110 n
+   120 x
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

achar(3), +iachar(3), +ichar(3)

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

iachar#

+
+

Name#

+

iachar(3) - [CHARACTER:CONVERSION] Return integer ASCII code of a character

+
+
+

Synopsis#

+
    result = iachar(c [,kind])
+
+
+
     elemental integer(kind=KIND) function iachar(c,kind)
+
+      character(len=1),intent(in) :: c
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • c is a single character

  • +
  • The return value is of type integer and of kind KIND. If KIND +is absent, the return value is of default integer kind.

  • +
+
+
NOTE:

a kind designated as ** may be any supported kind for the type

+
+
+
+
+

Description#

+

iachar(3) returns the code for the ASCII character in the first +character position of C.

+
+
+

Options#

+
    +
  • +
    c

    A character to determine the ASCII code of.

    +
    +

    A common extension is to allow strings but all but the first character +is then ignored.

    +
    +
    +
  • +
  • +
    kind

    A constant initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

the result is the position of the character c in the ASCII +collating sequence. It is nonnegative and less than or equal to 127.

+

By ASCII, it is meant that c is in the collating sequence defined +by the codes specified in ISO/IEC 646:1991 (International Reference +Version).

+

The value of the result is processor dependent if c is not in the +ASCII collating sequence.

+

The results are consistent with the lge(3), lgt(3), lle(3), +and llt(3) comparison functions. For example, if lle(C, D) +is true, iachar(C) <= iachar (D) is true where C and D +are any two characters representable by the processor.

+
+
+

Examples#

+

Sample program:

+
program demo_iachar
+implicit none
+   ! basic usage
+    ! just does a string one character long
+    write(*,*)iachar('A')
+    ! elemental: can do an array of letters
+    write(*,*)iachar(['A','Z','a','z'])
+
+   ! convert all characters to lowercase
+    write(*,'(a)')lower('abcdefg ABCDEFG')
+contains
+!
+pure elemental function lower(str) result (string)
+! Changes a string to lowercase
+character(*), intent(In)     :: str
+character(len(str))          :: string
+integer                      :: i
+   string = str
+   ! step thru each letter in the string in specified range
+   do i = 1, len(str)
+      select case (str(i:i))
+      case ('A':'Z') ! change letter to miniscule
+         string(i:i) = char(iachar(str(i:i))+32)
+      case default
+      end select
+   end do
+end function lower
+!
+end program demo_iachar
+
+
+

Results:

+
   65
+   65          90          97         122
+   abcdefg abcdefg
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument - Fortran 2003

+
+
+

See Also#

+

achar(3), +char(3), +ichar(3)

+

See ichar(3) in particular for a discussion of converting +between numerical values and formatted string representations.

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ichar#

+
+

Name#

+

ichar(3) - [CHARACTER:CONVERSION] Character-to-integer code conversion function

+
+
+

Synopsis#

+
    result = ichar(c [,kind])
+
+
+
     elemental integer(kind=KIND) function ichar(c,KIND)
+
+      character(len=1,kind=**),intent(in) :: c
+      integer,intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • c is a scalar character

  • +
  • kind is a constant integer initialization expression indicating +the kind parameter of the result.

  • +
  • The return value is of type integer and of kind kind. If kind +is absent, the return value is of default integer kind.

  • +
+
+
+

Description#

+

ichar(3) returns the code for the character in the system’s native +character set. The correspondence between characters and their codes is +not necessarily the same across different Fortran implementations. For +example, a platform using EBCDIC would return different values than an +ASCII platform.

+

See iachar(3) for specifically working with the ASCII character set.

+
+
+

Options#

+
    +
  • +
    c

    The input character to determine the code for. +Its value shall be that of a character capable of representation in the processor.

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result. If kind is absent, +the return value is of default integer kind.

    +
    +
    +
  • +
+
+
+

Result#

+

The code in the system default character set for the character being +queried is returned.

+

The result is the position of c in the processor collating sequence +associated with the kind type parameter of c.

+

it is nonnegative and less than n, where n is the number of characters +in the collating sequence.

+

The kind type parameter of the result shall specify an integer kind +that is capable of representing n.

+

For any characters C and D capable of representation in the processor, +C <= D is true if and only if ICHAR (C) <= ICHAR (D) is true and C == +D is true if and only if ICHAR (C) == ICHAR (D) is true.

+
+
+

Examples#

+

Sample program:

+
program demo_ichar
+implicit none
+
+   write(*,*)ichar(['a','z','A','Z'])
+
+end program demo_ichar
+
+
+

Results:

+
             97         122          65          90
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument -Fortran 2003

+
+
+

See Also#

+

achar(3), +char(3), +iachar(3)

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

scan(3), +verify(3)

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

index#

+
+

Name#

+

index(3) - [CHARACTER:SEARCH] Position of a substring within a string

+
+
+

Synopsis#

+
result = index( string, substring [,back] [,kind] )
+
+
+
 elemental integer(kind=KIND) function index(string,substring,back,kind)
+
+  character(len=*,kind=KIND),intent(in) :: string
+  character(len=*,kind=KIND),intent(in) :: substring
+  logical(kind=**),intent(in),optional :: back
+  integer(kind=**),intent(in),optional :: kind
+
+
+
+
+

Characteristics#

+
    +
  • string is a character variable of any kind

  • +
  • substring is a character variable of the same kind as string

  • +
  • back is a logical variable of any supported kind

  • +
  • KIND is a scalar integer constant expression.

  • +
+
+
+

Description#

+

index(3) returns the position of the start of the leftmost +or rightmost occurrence of string substring in string, +counting from one. If substring is not present in string, +zero is returned.

+
+
+

Options#

+
    +
  • +
    string

    string to be searched for a match

    +
    +
    +
  • +
  • +
    substring

    string to attempt to locate in string

    +
    +
    +
  • +
  • +
    back

    If the back argument is present and true, the return value is the +start of the rightmost occurrence rather than the leftmost.

    +
    +
    +
  • +
  • +
    kind

    if kind is present, the kind type parameter is that specified by the value of +kind; otherwise the kind type parameter is that of default integer type.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is the starting position of the first substring +substring found in string.

+

If the length of substring is longer than string the result +is zero.

+

If the substring is not found the result is zero.

+

If back is .true. the greatest starting position is returned +(that is, the position of the right-most match). Otherwise, +the smallest position starting a match (ie. the left-most match) +is returned.

+

The position returned is measured from the left with the first +character of string being position one.

+

Otherwise, if no match is found zero is returned.

+
+
+

Examples#

+

Example program

+
program demo_index
+implicit none
+character(len=*),parameter :: str=&
+   'Search this string for this expression'
+   !1234567890123456789012345678901234567890
+   write(*,*)&
+      index(str,'this').eq.8,              &
+      ! return value is counted from the left end even if BACK=.TRUE.
+      index(str,'this',back=.true.).eq.24, &
+      ! INDEX is case-sensitive
+      index(str,'This').eq.0
+end program demo_index
+
+
+

Expected Results:

+
   T T T
+
+
+
+
+

Standard#

+

FORTRAN 77 , with KIND argument Fortran 2003

+
+
+

See Also#

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions

+
+
+
+

scan#

+
+

Name#

+

scan(3) - [CHARACTER:SEARCH] Scan a string for the presence of a set of characters

+
+
+

Synopsis#

+
    result = scan( string, set, [,back] [,kind] )
+
+
+
     elemental integer(kind=KIND) function scan(string,set,back,kind)
+
+      character(len=*,kind=**),intent(in) :: string
+      character(len=*,kind=**),intent(in) :: set
+      logical,intent(in),optional :: back
+      integer,intent(in),optional :: kind
+
+
+
+
+

Characteristics#

+
    +
  • string is a character string of any kind

  • +
  • set must be a character string with the same kind as string

  • +
  • back is a logical

  • +
  • kind is a scalar integer constant expression

  • +
  • the result is an integer with the kind specified by kind. If +kind is not present the result is a default integer.

  • +
+
+
+

Description#

+

scan(3) scans a string for any of the characters in a set +of characters.

+

If back is either absent or equals .false., this function +returns the position of the leftmost character of STRING that is +in set. If back equals .true., the rightmost position is +returned. If no character of set is found in string, the result +is zero.

+
+
+

Options#

+
    +
  • +
    string

    the string to be scanned

    +
    +
    +
  • +
  • +
    set

    the set of characters which will be matched

    +
    +
    +
  • +
  • +
    back

    if .true. the position of the rightmost character matched is +returned, instead of the leftmost.

    +
    +
    +
  • +
  • +
    kind

    the kind of the returned value is the same as kind if +present. Otherwise a default integer kind is returned.

    +
    +
    +
  • +
+
+
+

Result#

+

If back is absent or is present with the value false and if +string contains at least one character that is in set, the value +of the result is the position of the leftmost character of string +that is in set.

+

If back is present with the value true and if string contains at +least one character that is in set, the value of the result is the +position of the rightmost character of string that is in set.

+

The value of the result is zero if no character of STRING is in SET +or if the length of STRING or SET is zero.

+
+
+

Examples#

+

Sample program:

+
program demo_scan
+implicit none
+   write(*,*) scan("fortran", "ao")          ! 2, found 'o'
+   write(*,*) scan("fortran", "ao", .true.)  ! 6, found 'a'
+   write(*,*) scan("fortran", "c++")         ! 0, found none
+end program demo_scan
+
+
+

Results:

+
 >            2
+ >            6
+ >            0
+
+
+
+
+

Standard#

+

Fortran 95 , with KIND argument - Fortran 2003

+
+
+

See Also#

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

verify#

+
+

Name#

+

verify(3) - [CHARACTER:SEARCH] Position of a character in a string +of characters that does not appear in a given set of characters.

+
+
+

Synopsis#

+
    result = verify(string, set [,back] [,kind] )
+
+
+
     elemental integer(kind=KIND) function verify(string,set,back,KIND)
+
+      character(len=*,kind=**),intent(in) :: string
+      character(len=*,kind=**),intent(in) :: set
+      logical,intent(in),optional :: back
+      integer,intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • string and set must be of type character and have the same kind for any +individual call, but that can be any supported character kind.

  • +
  • KIND must be a constant integer initialization expression and a +valid kind for the integer type.

  • +
  • back shall be of type logical.

  • +
  • the kind of the returned value is the same as kind if +present. Otherwise a default integer kind is returned.

  • +
+
+
+

Description#

+

verify(3) verifies that all the characters in string belong +to the set of characters in set by identifying the position of +the first character in the string that is not in the set.

+

This makes it easy to verify strings are all uppercase or lowercase, +follow a basic syntax, only contain printable characters, and many +of the conditions tested for with the C routines isalnum(3c), +isalpha(3c), isascii(3c), isblank(3c), iscntrl(3c), +isdigit(3c), isgraph(3c), islower(3c), isprint(3c), +ispunct(3c), isspace(3c), isupper(3c), and isxdigit(3c); +but for a string as well as an array of strings.

+
+
+

Options#

+
    +
  • +
    string

    The string to search in for an unmatched character.

    +
    +
    +
  • +
  • +
    set

    The set of characters that must be matched.

    +
    +
    +
  • +
  • +
    back

    The direction to look for an unmatched character. The left-most +unmatched character position is returned unless back is present +and .false., which causes the position of the right-most unmatched +character to be returned instead of the left-most unmatched character.

    +
    +
    +
  • +
  • +
    kind

    An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

If all characters of string are found in set, the result is zero.

+

If string is of zero length a zero (0) is always returned.

+

Otherwise, if an unmatched character is found +The position of the first or last (if back is .false.) unmatched +character in string is returned, starting with position one on the +left end of the string.

+
+
+

Examples#

+
+

Sample program I:#

+
program demo_verify
+implicit none
+! some useful character sets
+character,parameter :: &
+ & int*(*)   = '1234567890', &
+ & low*(*)   = 'abcdefghijklmnopqrstuvwxyz', &
+ & upp*(*)   = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', &
+ & punc*(*)  = "!""#$%&'()*+,-./:;<=>?@[\]^_`{|}~", &
+ & blank*(*) = ' ', &
+ & tab       = char(11), &
+ & prnt*(*) = int//low//upp//blank//punc
+
+character(len=:),allocatable :: string
+integer :: i
+    print *, 'basics:'
+    print *, VERIFY ('ABBA', 'A')                ! has the value 2.
+    print *, VERIFY ('ABBA', 'A', BACK = .TRUE.) ! has the value 3.
+    print *, VERIFY ('ABBA', 'AB')               ! has the value 0.
+
+   print *,'find first non-uppercase letter'
+   ! will produce the location of "d", because there is no match in UPP
+   write(*,*) 'something unmatched',verify("ABCdEFG", upp)
+
+   print *,'if everything is matched return zero'
+   ! will produce 0 as all letters have a match
+   write(*,*) 'everything matched',verify("ffoorrttrraann", "nartrof")
+
+   print *,'easily categorize strings as uppercase, lowercase, ...'
+   ! easy C-like functionality but does entire strings not just characters
+   write(*,*)'isdigit 123?',verify("123", int) == 0
+   write(*,*)'islower abc?',verify("abc", low) == 0
+   write(*,*)'isalpha aBc?',verify("aBc", low//upp) == 0
+   write(*,*)'isblank aBc dEf?',verify("aBc dEf", blank//tab ) /= 0
+   ! check if all printable characters
+   string="aB;cde,fgHI!Jklmno PQRSTU vwxyz"
+   write(*,*)'isprint?',verify(string,prnt) == 0
+   ! this now has a nonprintable tab character in it
+   string(10:10)=char(11)
+   write(*,*)'isprint?',verify(string,prnt) == 0
+
+   print *,'VERIFY(3) is very powerful using expressions as masks'
+   ! verify(3f) is often used in a logical expression
+   string=" This is NOT all UPPERCASE "
+   write(*,*)'all uppercase/spaces?',verify(string, blank//upp) == 0
+   string=" This IS all uppercase "
+   write(*,*) 'string=['//string//']'
+   write(*,*)'all uppercase/spaces?',verify(string, blank//upp) == 0
+
+  ! set and show complex string to be tested
+   string='  Check this out. Let me know  '
+   ! show the string being examined
+   write(*,*) 'string=['//string//']'
+   write(*,*) '        '//repeat(int,4) ! number line
+
+   ! the Fortran functions returns a position just not a logical like C
+   print *, 'returning a position not just a logical is useful'
+   ! which can be very useful for parsing strings
+   write(*,*)'first non-blank character',verify(string, blank)
+   write(*,*)'last non-blank character',verify(string, blank,back=.true.)
+   write(*,*)'first non-letter non-blank',verify(string,low//upp//blank)
+
+  !VERIFY(3) is elemental so you can check an array of strings in one call
+  print *, 'elemental'
+   ! are strings all letters (or blanks)?
+   write(*,*) 'array of strings',verify( &
+   ! strings must all be same length, so force to length 10
+   & [character(len=10) :: "YES","ok","000","good one","Nope!"], &
+   & low//upp//blank) == 0
+
+   ! rarer, but the set can be an array, not just the strings to test
+   ! you could do ISPRINT() this (harder) way :>
+   write(*,*)'isprint?',.not.all(verify("aBc", [(char(i),i=32,126)])==1)
+   ! instead of this way
+   write(*,*)'isprint?',verify("aBc",prnt) == 0
+
+end program demo_verify
+
+
+

Results:

+
 >  basics:
+ >            2
+ >            3
+ >            0
+ >  find first non-uppercase letter
+ >  something unmatched           4
+ >  if everything is matched return zero
+ >  everything matched           0
+ >  easily categorize strings as uppercase, lowercase, ...
+ >  isdigit 123? T
+ >  islower abc? T
+ >  isalpha aBc? T
+ >  isblank aBc dEf? T
+ >  isprint? T
+ >  isprint? F
+ >  VERIFY(3) is very powerful using expressions as masks
+ >  all uppercase/spaces? F
+ >  string=[ This IS all uppercase ]
+ >  all uppercase/spaces? F
+ >  string=[  Check this out. Let me know  ]
+ >          1234567890123456789012345678901234567890
+ >  returning a position not just a logical is useful
+ >  first non-blank character           3
+ >  last non-blank character          29
+ >  first non-letter non-blank          17
+ >  elemental
+ >  array of strings T T F T F
+ >  isprint? T
+ >  isprint? T
+
+
+
+
+

Sample program II:#

+

Determine if strings are valid integer representations

+
program fortran_ints
+implicit none
+integer :: i
+character(len=*),parameter :: ints(*)=[character(len=10) :: &
+ '+1 ', &
+ '3044848 ', &
+ '30.40 ', &
+ 'September ', &
+ '1 2 3', &
+ '  -3000 ', &
+ ' ']
+   ! show the strings to test
+   write(*,'("|",*(g0,"|"))') ints
+   ! show if strings pass or fail the test done by isint(3f)
+   write(*,'("|",*(1x,l1,8x,"|"))') isint(ints)
+
+contains
+
+elemental function isint(line) result (lout)
+!
+! determine if string is a valid integer representation
+! ignoring trailing spaces and leading spaces
+!
+character(len=*),parameter   :: digits='0123456789'
+character(len=*),intent(in)  :: line
+character(len=:),allocatable :: name
+logical                      :: lout
+   lout=.false.
+   ! make sure at least two characters long to simplify tests
+   name=adjustl(line)//'  '
+   ! blank string
+   if( name == '' )return
+   ! allow one leading sign
+   if( verify(name(1:1),'+-') == 0 ) name=name(2:)
+   ! was just a sign
+   if( name == '' )return
+   lout=verify(trim(name), digits)  == 0
+end function isint
+
+end program fortran_ints
+
+
+

Results:

+
|+1       |3044848  |30.40    |September|1 2 3    |  -3000  |         |
+| T       | T       | F       | F       | F       | T       | F       |
+
+
+
+
+

Sample program III:#

+

Determine if strings represent valid Fortran symbol names

+
program fortran_symbol_name
+implicit none
+integer :: i
+character(len=*),parameter :: symbols(*)=[character(len=10) :: &
+ 'A_ ', &
+ '10 ', &
+ 'September ', &
+ 'A B', &
+ '_A ', &
+ ' ']
+
+   write(*,'("|",*(g0,"|"))') symbols
+   write(*,'("|",*(1x,l1,8x,"|"))') fortran_name(symbols)
+
+contains
+
+elemental function fortran_name(line) result (lout)
+!
+! determine if a string is a valid Fortran name
+! ignoring trailing spaces (but not leading spaces)
+!
+character(len=*),parameter   :: int='0123456789'
+character(len=*),parameter   :: lower='abcdefghijklmnopqrstuvwxyz'
+character(len=*),parameter   :: upper='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+character(len=*),parameter   :: allowed=upper//lower//int//'_'
+
+character(len=*),intent(in)  :: line
+character(len=:),allocatable :: name
+logical                      :: lout
+   name=trim(line)
+   if(len(name).ne.0)then
+      ! first character is alphameric
+      lout = verify(name(1:1), lower//upper) == 0  &
+       ! other characters are allowed in a symbol name
+       & .and. verify(name,allowed) == 0           &
+       ! allowable length
+       & .and. len(name) <= 63
+   else
+      lout = .false.
+   endif
+end function fortran_name
+
+end program fortran_symbol_name
+
+
+

Results:

+
    |A_        |10        |September |A B       |_A        |          |
+    | T        | F        | T        | F        | F        | F        |
+
+
+
+
+

Sample program IV:#

+

check if string is of form NN-HHHHH

+
program checkform
+! check if string is of form NN-HHHHH
+implicit none
+character(len=*),parameter :: int='1234567890'
+character(len=*),parameter :: hex='abcdefABCDEF0123456789'
+logical                    :: lout
+character(len=80)          :: chars
+
+   chars='32-af43d'
+   lout=.true.
+
+   ! are the first two characters integer characters?
+   lout = lout.and.(verify(chars(1:2), int) == 0)
+
+   ! is the third character a dash?
+   lout = lout.and.(verify(chars(3:3), '-') == 0)
+
+   ! is remaining string a valid representation of a hex value?
+   lout = lout.and.(verify(chars(4:8), hex) == 0)
+
+   if(lout)then
+      write(*,*)trim(chars),' passed'
+   else
+      write(*,*)trim(chars),' failed'
+   endif
+end program checkform
+
+
+

Results:

+
    32-af43d passed
+
+
+
+
+

Sample program V:#

+

exploring uses of elemental functionality and dusty corners

+
program more_verify
+implicit none
+character(len=*),parameter :: &
+  & int='0123456789', &
+  & low='abcdefghijklmnopqrstuvwxyz', &
+  & upp='ABCDEFGHIJKLMNOPQRSTUVWXYZ', &
+  & blank=' '
+! note character variables in an array have to be of the same length
+character(len=6) :: strings(3)=["Go    ","right ","home! "]
+character(len=2) :: sets(3)=["do","re","me"]
+
+  ! elemental -- you can use arrays for both strings and for sets
+
+   ! check each string from right to left for non-letter/non-blank
+   write(*,*)'last non-letter',verify(strings,upp//low//blank,back=.true.)
+
+   ! even BACK can be an array
+   ! find last non-uppercase character in "Howdy "
+   ! and first non-lowercase in "there "
+   write(*,*) verify(strings(1:2),[upp,low],back=[.true.,.false.])
+
+   ! using a null string for a set is not well defined. Avoid it
+   write(*,*) 'null',verify("for tran ", "", .true.) ! 8,length of string?
+   ! probably what you expected
+   write(*,*) 'blank',verify("for tran ", " ", .true.) ! 7,found 'n'
+
+   ! first character in  "Go    " not in "do",
+   ! and first letter in "right " not in "ri"
+   ! and first letter in "home! " not in "me"
+   write(*,*) verify(strings,sets)
+
+end program more_verify
+
+
+

Results:

+
    > last non-letter 0 0 5
+    > 6 6
+    > null 9
+    > blank 8
+    > 1 2 1
+
+
+
+
+
+

Standard#

+

Fortran 95 , with kind argument - Fortran 2003

+
+
+

See Also#

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

lge#

+
+

Name#

+

lge(3) - [CHARACTER:COMPARE] ASCII Lexical greater than or equal

+
+
+

Synopsis#

+
    result = lge(string_a, stringb)
+
+
+
     elemental logical function lge(string_a, string_b)
+
+      character(len=*),intent(in) :: string_a
+      character(len=*),intent(in) :: string_b
+
+
+
+
+

Characteristics#

+
    +
  • string_a is default character or an ASCII character.

  • +
  • string_b is the same type and kind as string_a

  • +
  • the result is a default logical

  • +
+
+
+

Description#

+

lge(3) determines whether one string is lexically greater than +or equal to another string, where the two strings are interpreted as +containing ASCII character codes. If string_a and string_b +are not the same length, the shorter is compared as if spaces were +appended to it to form a value that has the same length as the longer.

+

The lexical comparison intrinsics lge(3), lgt(3), lle(3), +and llt(3) differ from the corresponding intrinsic operators +.ge., .gt., .le., and .lt., in that the latter use the processor’s +character ordering (which is not ASCII on some targets), whereas the +former always use the ASCII ordering.

+
+
+

Options#

+
    +
  • +
    string_a

    string to be tested

    +
    +
    +
  • +
  • +
    string_b

    string to compare to string_a

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if string*a == string_b, and *.false._ otherwise, +based on the ASCII collating sequence.

+

If both input arguments are null strings, .true. is always returned.

+

If either string contains a character not in the ASCII character set, +the result is processor dependent.

+
+
+

Examples#

+

Sample program:

+
program demo_lge
+implicit none
+integer :: i
+   print *,'the ASCII collating sequence for printable characters'
+   write(*,'(1x,19a)')(char(i),i=32,126) ! ASCII order
+   write(*,*) lge('abc','ABC')           ! [T] lowercase is > uppercase
+   write(*,*) lge('abc','abc  ')         ! [T] trailing spaces
+   ! If both strings are of zero length the result is true
+   write(*,*) lge('','')                 ! [T]
+   write(*,*) lge('','a')                ! [F] the null string is padded
+   write(*,*) lge('a','')                ! [T]
+   ! elemental
+   write(*,*) lge('abc',['abc','123'])   ! [T T]  scalar and array
+   write(*,*) lge(['cba', '123'],'abc')  ! [T F]
+   write(*,*) lge(['abc','123'],['cba','123']) ! [F T]  both arrays
+end program demo_lge
+
+
+

Results:

+
 >  the ASCII collating sequence for printable characters
+ >   !"#$%&'()*+,-./012
+ >  3456789:;<=>?@ABCDE
+ >  FGHIJKLMNOPQRSTUVWX
+ >  YZ[\]^_`abcdefghijk
+ >  lmnopqrstuvwxyz{|}~
+ >  T
+ >  T
+ >  T
+ >  F
+ >  T
+ >  T T
+ >  T F
+ >  F T
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

lgt(3), +lle(3), +llt(3)

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

scan(3), +verify(3)

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

lgt#

+
+

Name#

+

lgt(3) - [CHARACTER:COMPARE] ASCII Lexical greater than

+
+
+

Synopsis#

+
     result = lgt(string_a, string_b)
+
+
+
      elemental logical function lgt(string_a, string_b)
+
+       character(len=*),intent(in) :: string_a
+       character(len=*),intent(in) :: string_b
+
+
+
+
+

Characteristics#

+
    +
  • string_a is default character or an ASCII character.

  • +
  • string_b is the same type and kind as string_a

  • +
  • the result is a default logical

  • +
+
+
+

Description#

+

lgt(3) determines whether one string is lexically greater than +another string, where the two strings are interpreted as containing +ASCII character codes. If the String a and String b are not +the same length, the shorter is compared as if spaces were appended +to it to form a value that has the same length as the longer.

+

In general, the lexical comparison intrinsics lge, lgt, lle, +and llt differ from the corresponding intrinsic operators .ge., +.gt., .le., and .lt., in that the latter use the processor’s character +ordering (which is not ASCII on some targets), whereas the former +always use the ASCII ordering.

+
+
+

Options#

+
    +
  • +
    string_a

    string to be tested

    +
    +
    +
  • +
  • +
    string_b

    string to compare to string_a

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if string*a > string_b, and *.false._ otherwise, +based on the ASCII ordering.

+

If both input arguments are null strings, .false. is returned.

+

If either string contains a character not in the ASCII character set, +the result is processor dependent.

+
+
+

Examples#

+

Sample program:

+
program demo_lgt
+implicit none
+integer :: i
+   print *,'the ASCII collating sequence for printable characters'
+   write(*,'(1x,19a)')(char(i),i=32,126)
+
+   write(*,*) lgt('abc','ABC')          ! [T] lowercase is > uppercase
+   write(*,*) lgt('abc','abc  ')        ! [F] trailing spaces
+
+   ! If both strings are of zero length the result is false.
+   write(*,*) lgt('','')                ! [F]
+   write(*,*) lgt('','a')               ! [F] the null string is padded
+   write(*,*) lgt('a','')               ! [T]
+   write(*,*) lgt('abc',['abc','123'])  ! [F T]  scalar and array
+   write(*,*) lgt(['cba', '123'],'abc') ! [T F]
+   write(*,*) lgt(['abc','123'],['cba','123']) ! [F F]  both arrays
+end program demo_lgt
+
+
+

Results:

+
 >  the ASCII collating sequence for printable characters
+ >   !"#$%&'()*+,-./012
+ >  3456789:;<=>?@ABCDE
+ >  FGHIJKLMNOPQRSTUVWX
+ >  YZ[\]^_`abcdefghijk
+ >  lmnopqrstuvwxyz{|}~
+ >  T
+ >  F
+ >  F
+ >  F
+ >  T
+ >  F T
+ >  T F
+ >  F F
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

lge(3), +lle(3), +llt(3)

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

scan(3), +verify(3)

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

lle#

+
+

Name#

+

lle(3) - [CHARACTER:COMPARE] ASCII Lexical less than or equal

+
+
+

Synopsis#

+
     result = lle(string_a, stringb)
+
+
+
      elemental logical function lle(string_a, string_b)
+
+       character(len=*),intent(in) :: string_a
+       character(len=*),intent(in) :: string_b
+
+
+
+
+

Characteristics#

+
    +
  • string_a is default character or an ASCII character.

  • +
  • string_b is the same type and kind as string_a

  • +
  • the result is a default logical

  • +
+
+
+

Description#

+

lle(3) determines whether one string is lexically less than or equal +to another string, where the two strings are interpreted as containing +ASCII character codes.

+

If string_a and string_b are not the +same length, the shorter is compared as if spaces were appended to it +to form a value that has the same length as the longer.

+

Leading spaces are significant.

+

In general, the lexical comparison intrinsics lge, lgt, lle, +and llt differ from the corresponding intrinsic operators .ge., +.gt., .le., and .lt., in that the latter use the processor’s character +ordering (which is not ASCII on some targets), whereas lle(3) +always uses the ASCII ordering.

+
+
+

Options#

+
    +
  • +
    string_a

    string to be tested

    +
    +
    +
  • +
  • +
    string_b

    string to compare to string_a

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  • result +Returns .true. if string_a <= string_b, and .false. otherwise, +based on the ASCII collating sequence.

    +

    If both input arguments are null strings, .true. is always returned.

    +

    If either string contains a character not in the ASCII character set, +the result is processor dependent.

    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_lle
+implicit none
+integer :: i
+   print *,'the ASCII collating sequence for printable characters'
+   write(*,'(1x,19a)')(char(i),i=32,126)
+  ! basics
+
+   print *,'case matters'
+   write(*,*) lle('abc','ABC')          ! F lowercase is > uppercase
+
+   print *,'a space is the lowest printable character'
+   write(*,*) lle('abcd','abc')         ! F  d > space
+   write(*,*) lle('abc','abcd')         ! T  space < d
+
+   print *,'leading spaces matter, trailing spaces do not'
+   write(*,*) lle('abc','abc  ')        ! T trailing spaces
+   write(*,*) lle('abc',' abc')         ! F leading spaces are significant
+
+   print *,'even null strings are padded and compared'
+   ! If both strings are of zero length the result is true.
+   write(*,*) lle('','')                ! T
+   write(*,*) lle('','a')               ! T the null string is padded
+   write(*,*) lle('a','')               ! F
+   print *,'elemental'
+   write(*,*) lle('abc',['abc','123'])  ! [T,F] scalar and array
+   write(*,*) lle(['cba', '123'],'abc') ! [F,T]
+   ! per the rules for elemental procedures arrays must be the same size
+   write(*,*) lle(['abc','123'],['cba','123']) ! [T,T] both arrays
+end program demo_lle
+
+
+

Results:

+
 >  the ASCII collating sequence for printable characters
+ >   !"#$%&'()*+,-./012
+ >  3456789:;<=>?@ABCDE
+ >  FGHIJKLMNOPQRSTUVWX
+ >  YZ[\]^_`abcdefghijk
+ >  lmnopqrstuvwxyz{|}~
+ >  case matters
+ >  F
+ >  a space is the lowest printable character
+ >  F
+ >  T
+ >  leading spaces matter, trailing spaces do not
+ >  T
+ >  F
+ >  even null strings are padded and compared
+ >  T
+ >  T
+ >  F
+ >  elemental
+ >  T F
+ >  F T
+ >  T T
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

lge(3), +lgt(3), +llt(3)

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

scan(3), +verify(3)

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

llt#

+
+

Name#

+

llt(3) - [CHARACTER:COMPARE] ASCII Lexical less than

+
+
+

Synopsis#

+
     result = llt(string_a, stringb)
+
+
+
      elemental logical function llt(string_a, string_b)
+
+       character(len=*),intent(in) :: string_a
+       character(len=*),intent(in) :: string_b
+
+
+
+
+

Characteristics#

+
    +
  • string_a is default character or an ASCII character.

  • +
  • string_b is the same type and kind as string_a

  • +
  • the result is a default logical

  • +
+
+
+

Description#

+

llt(3) determines whether one string is lexically less than +another string, where the two strings are interpreted as containing +ASCII character codes. If the string_a and string_b are not +the same length, the shorter is compared as if spaces were appended +to it to form a value that has the same length as the longer.

+

In general, the lexical comparison intrinsics lge, lgt, lle, +and llt differ from the corresponding intrinsic operators .ge., +.gt., .le., and .lt., in that the latter use the processor’s character +ordering (which is not ASCII on some targets), whereas the former +always use the ASCII ordering.

+
+
+

Options#

+
    +
  • +
    string_a

    string to be tested

    +
    +
    +
  • +
  • +
    string_b

    string to compare to string_a

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if string*a <= string_b, and *.false._ otherwise, +based on the ASCII collating sequence.

+

If both input arguments are null strings, .false. is always returned.

+

If either string contains a character not in the ASCII character set, +the result is processor dependent.

+
+
+

Examples#

+

Sample program:

+
program demo_llt
+implicit none
+integer :: i
+
+   print *,'the ASCII collating sequence for printable characters'
+   write(*,'(1x,19a)')(char(i),i=32,126) ! ASCII order
+
+  ! basics
+   print *,'case matters'
+   write(*,*) llt('abc','ABC')           ! [F] lowercase is > uppercase
+   write(*,*) llt('abc','abc  ')         ! [F] trailing spaces
+   ! If both strings are of zero length the result is false.
+   write(*,*) llt('','')                 ! [F]
+   write(*,*) llt('','a')                ! [T] the null string is padded
+   write(*,*) llt('a','')                ! [F]
+   print *,'elemental'
+   write(*,*) llt('abc',['abc','123'])   ! [F F]  scalar and array
+   write(*,*) llt(['cba', '123'],'abc')  ! [F T]
+   write(*,*) llt(['abc','123'],['cba','123']) ! [T F]  both arrays
+end program demo_llt
+
+
+

Results:

+
 >  the ASCII collating sequence for printable characters
+ >   !"#$%&'()*+,-./012
+ >  3456789:;<=>?@ABCDE
+ >  FGHIJKLMNOPQRSTUVWX
+ >  YZ[\]^_`abcdefghijk
+ >  lmnopqrstuvwxyz{|}~
+ >  case matters
+ >  F
+ >  F
+ >  F
+ >  T
+ >  F
+ >  elemental
+ >  F F
+ >  F T
+ >  T F
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

lge(3), +lgt(3), +lle(3))

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

adjustl#

+
+

Name#

+

adjustl(3) - [CHARACTER:WHITESPACE] Left-justified a string

+
+
+

Synopsis#

+
  result = adjustl(string)
+
+
+
   elemental character(len=len(string),kind=KIND) function adjustl(string)
+
+    character(len=*,kind=KIND),intent(in) :: string
+
+
+
+
+

Characteristics#

+
    +
  • string is a character variable of any supported kind

  • +
  • The return value is a character variable of the same kind +and length as string

  • +
+
+
+

Description#

+

adjustl(3) will left-justify a string by removing leading +spaces. Spaces are inserted at the end of the string as needed.

+
+
+

Options#

+
    +
  • +
    string

    the string to left-justify

    +
    +
    +
  • +
+
+
+

Result#

+

A copy of string where leading spaces are removed and the same +number of spaces are inserted on the end of string.

+
+
+

Examples#

+

Sample program:

+
program demo_adjustl
+implicit none
+character(len=20) :: str = '   sample string'
+character(len=:),allocatable :: astr
+integer :: length
+
+   ! basic use
+    write(*,'(a,"[",a,"]")') 'original: ',str
+    str=adjustl(str)
+    write(*,'(a,"[",a,"]")') 'adjusted: ',str
+
+    ! a fixed-length string can be printed
+    ! trimmed using trim(3f) or len_trim(3f)
+    write(*,'(a,"[",a,"]")') 'trimmed:  ',trim(str)
+    length=len_trim(str)
+    write(*,'(a,"[",a,"]")') 'substring:',str(:length)
+
+    ! note an allocatable string stays the same length too
+    ! and is not trimmed by just an adjustl(3f) call.
+    astr='    allocatable string   '
+    write(*,'(a,"[",a,"]")') 'original:',astr
+    astr = adjustl(astr)
+    write(*,'(a,"[",a,"]")') 'adjusted:',astr
+    ! trim(3f) can be used to change the length
+    astr = trim(astr)
+    write(*,'(a,"[",a,"]")') 'trimmed: ',astr
+
+end program demo_adjustl
+
+
+

Results:

+
   original: [   sample string    ]
+   adjusted: [sample string       ]
+   trimmed:  [sample string]
+   substring:[sample string]
+   original:[    allocatable string   ]
+   adjusted:[allocatable string       ]
+   trimmed: [allocatable string]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

adjustr(3), +trim(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

adjustr#

+
+

Name#

+

adjustr(3) - [CHARACTER:WHITESPACE] Right-justify a string

+
+
+

Synopsis#

+
  result = adjustr(string)
+
+
+
   elemental character(len=len(string),kind=KIND) function adjustr(string)
+
+    character(len=*,kind=KIND),intent(in) :: string
+
+
+
+
+

Characteristics#

+
    +
  • string is a character variable

  • +
  • The return value is a character variable of the same kind and +length as string

  • +
+
+
+

Description#

+

adjustr(3) right-justifies a string by removing trailing spaces. Spaces +are inserted at the start of the string as needed to retain the original +length.

+
+
+

Options#

+
    +
  • +
    string

    the string to right-justify

    +
    +
    +
  • +
+
+
+

Result#

+

Trailing spaces are removed and the same number of spaces are inserted +at the start of string.

+
+
+

Examples#

+

Sample program:

+
program demo_adjustr
+implicit none
+character(len=20) :: str
+   ! print a short number line
+   write(*,'(a)')repeat('1234567890',2)
+
+  ! basic usage
+   str = '  sample string '
+   write(*,'(a)') str
+   str = adjustr(str)
+   write(*,'(a)') str
+
+   !
+   ! elemental
+   !
+   write(*,'(a)')repeat('1234567890',5)
+   write(*,'(a)')adjustr([character(len=50) :: &
+   '  first           ', &
+   '     second       ', &
+   '         third    ' ])
+   write(*,'(a)')repeat('1234567890',5)
+
+end program demo_adjustr
+
+
+

Results:

+
   12345678901234567890
+     sample string
+          sample string
+   12345678901234567890123456789012345678901234567890
+                                                first
+                                               second
+                                                third
+   12345678901234567890123456789012345678901234567890
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

adjustl(3), +trim(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

len_trim#

+
+

Name#

+

len_trim(3) - [CHARACTER:WHITESPACE] Character length without trailing blank characters

+
+
+

Synopsis#

+
  result = len_trim(string [,kind])
+
+
+
   elemental integer(kind=KIND) function len_trim(string,KIND)
+
+    character(len=*),intent(in) :: string
+    integer(kind=KIND),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • string is of type character

  • +
  • kind is a scalar integer constant expression specifying the kind +of the returned value.

  • +
  • The return value is of type integer and of kind KIND. If KIND +is absent, the return value is of default integer kind.

  • +
+
+
+

Description#

+

len_trim(3) returns the length of a character string, ignoring +any trailing blanks.

+
+
+

Options#

+
    +
  • +
    string

    The input string whose length is to be measured.

    +
    +
    +
  • +
  • +
    kind

    Indicates the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The result equals the number of characters remaining +after any trailing blanks in string are removed.

+

If the input argument is of zero length or all blanks +the result is zero.

+
+
+

Examples#

+

Sample program

+
program demo_len_trim
+implicit none
+character(len=:),allocatable :: string
+integer :: i
+! basic usage
+   string=" how long is this string?     "
+   write(*,*) string
+   write(*,*)'UNTRIMMED LENGTH=',len(string)
+   write(*,*)'TRIMMED LENGTH=',len_trim(string)
+
+   ! print string, then print substring of string
+   string='xxxxx   '
+   write(*,*)string,string,string
+   i=len_trim(string)
+   write(*,*)string(:i),string(:i),string(:i)
+   !
+  ! elemental example
+   ELE:block
+   ! an array of strings may be used
+   character(len=:),allocatable :: tablet(:)
+   tablet=[character(len=256) :: &
+   & ' how long is this string?     ',&
+   & 'and this one?']
+      write(*,*)'UNTRIMMED LENGTH=  ',len(tablet)
+      write(*,*)'TRIMMED LENGTH=    ',len_trim(tablet)
+      write(*,*)'SUM TRIMMED LENGTH=',sum(len_trim(tablet))
+   endblock ELE
+   !
+end program demo_len_trim
+
+
+

Results:

+
     how long is this string?
+    UNTRIMMED LENGTH=          30
+    TRIMMED LENGTH=          25
+    xxxxx   xxxxx   xxxxx
+    xxxxxxxxxxxxxxx
+    UNTRIMMED LENGTH=           256
+    TRIMMED LENGTH=              25          13
+    SUM TRIMMED LENGTH=          38
+
+
+
+
+

Standard#

+

Fortran 95 . kind argument added with Fortran 2003.

+
+
+

See Also#

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

trim#

+
+

Name#

+

trim(3) - [CHARACTER:WHITESPACE] Remove trailing blank characters from a string

+
+
+

Synopsis#

+
    result = trim(string)
+
+
+
     character(len=:,kind=KIND) function trim(string)
+
+      character(len=*,kind=KIND),intent(in) :: string
+
+
+
+
+

Characteristics#

+
    +
  • KIND can be any kind supported for the character type.

  • +
  • The result has the same type and kind as the input argument string.

  • +
+
+
+

Description#

+

trim(3) removes trailing blank characters from a string.

+
+
+

Options#

+
    +
  • +
    string

    A string to trim

    +
    +
    +
  • +
+
+
+

Result#

+

The result is the same as string except trailing blanks are removed.

+

If string is composed entirely of blanks or has zero length, +the result has zero length.

+
+
+

Examples#

+

Sample program:

+
program demo_trim
+implicit none
+character(len=:), allocatable :: str, strs(:)
+character(len=*),parameter :: brackets='( *("[",a,"]":,1x) )'
+integer :: i
+
+   str='   trailing    '
+   print brackets, str,trim(str) ! trims it
+
+   str='   leading'
+   print brackets, str,trim(str) ! no effect
+
+   str='            '
+   print brackets, str,trim(str) ! becomes zero length
+   print *,  len(str), len(trim('               '))
+
+  ! array elements are all the same length, so you often
+  ! want to print them
+   strs=[character(len=10) :: "Z"," a b c","ABC",""]
+
+   write(*,*)'untrimmed:'
+   ! everything prints as ten characters; nice for neat columns
+   print brackets, (strs(i), i=1,size(strs))
+   print brackets, (strs(i), i=size(strs),1,-1)
+   write(*,*)'trimmed:'
+   ! everything prints trimmed
+   print brackets, (trim(strs(i)), i=1,size(strs))
+   print brackets, (trim(strs(i)), i=size(strs),1,-1)
+
+end program demo_trim
+
+
+

Results:

+
    > [   trailing    ] [   trailing]
+    > [   leading] [   leading]
+    > [            ] []
+    >           12           0
+    >  untrimmed:
+    > [Z         ] [ a b c    ] [ABC       ] [          ]
+    > [          ] [ABC       ] [ a b c    ] [Z         ]
+    >  trimmed:
+    > [Z] [ a b c] [ABC] []
+    > [] [ABC] [ a b c] [Z]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

Functions that perform operations on character strings, return lengths +of arguments, and search for certain arguments:

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/compiler/index.html b/learn/intrinsics/compiler/index.html new file mode 100644 index 000000000000..5277ff1fe85f --- /dev/null +++ b/learn/intrinsics/compiler/index.html @@ -0,0 +1,1053 @@ + + + + + + + + + Information about compiler and compiler options used for building — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Information about compiler and compiler options used for building#

+
+

compiler_options#

+
+

Name#

+

compiler_options(3) - [COMPILER:INQUIRY] Options passed to the compiler

+
+
+

Synopsis#

+
    result = compiler_options()
+
+
+
     character(len=:) function compiler_options()
+
+
+
+
+

Characteristics#

+
    +
  • the return value is a default-kind character variable with +system-dependent length.

  • +
+
+
+

Description#

+

compiler_options(3) returns a string with the options used for +compiling.

+
+
+

Options#

+

None.

+
+
+

Result#

+

The result contains the compiler flags used to compile the file +containing the compiler_options(3) call.

+
+
+

Examples#

+

Sample program:

+
program demo_compiler_version
+use, intrinsic :: iso_fortran_env, only : compiler_version
+use, intrinsic :: iso_fortran_env, only : compiler_options
+implicit none
+   print '(4a)', &
+      'This file was compiled by ', &
+      compiler_version(),           &
+      ' using the options ',        &
+      compiler_options()
+end program demo_compiler_version
+
+
+

Results:

+
This file was compiled by GCC version 10.3.0 using
+the options -I build/gfortran_2A42023B310FA28D
+-mtune=generic -march=x86-64 -auxbase-strip
+build/gfortran_2A42023B310FA28D/compiler_options/app_main.f90.o
+-g -Wall -Wextra -Wimplicit-interface -fPIC -fmax-errors=1
+-fcheck=bounds -fcheck=array-temps -fbacktrace
+-fcoarray=single -J build/gfortran_2A42023B310FA28D
+-fpre-include=/usr/include/finclude/math-vector-fortran.h
+
+This file was compiled by nvfortran 21.5-0 LLVM
+using the options app/main.f90 -c -Minform=inform
+-Mbackslash -Mbounds -Mchkptr -Mchkstk -traceback -module
+build/nvfortran_78229DCE997517A4 -Ibuild/nvfortran_78229DCE997517A4 -o
+build/nvfortran_78229DCE997517A4/compiler_options/app_main.f90.o
+
+This file was compiled by Intel(R) Fortran Intel(R) 64 Compiler Classic
+for applications running on Intel(R) 64, Version 2021.3.0 Build
+20210609_000000 using the options -Ibuild/ifort_5C58216731706F11
+-c -warn all -check all -error-limit 1 -O0 -g -assume
+byterecl -traceback -module build/ifort_5C58216731706F11 -o
+build/ifort_5C58216731706F11/compiler_options/app_main.f90.o
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

compiler_version(3), +iso_fortran_env(7)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

compiler_version#

+
+

Name#

+

compiler_version(3) - [COMPILER:INQUIRY] Compiler version string

+
+
+

Synopsis#

+
    result = compiler_version()
+
+
+
     character(len=:) function compiler_version()
+
+
+
+
+

Characteristics#

+
    +
  • The return value is a default-kind scalar character with +system-dependent length.

  • +
+
+
+

Description#

+

compiler_version(3) returns a string containing the name and +version of the compiler.

+
+
+

Options#

+

None.

+
+
+

Result#

+

The return value contains the name of the compiler and its version +number used to compile the file containing the compiler_version(3) +call.

+
+
+

Examples#

+

Sample program:

+
program demo_compiler_version
+use, intrinsic :: iso_fortran_env, only : compiler_version
+implicit none
+   print '(2a)', &
+      'This file was compiled by ', &
+      compiler_version()
+end program demo_compiler_version
+
+
+

Results:

+
This file was compiled by GCC version 10.3.0
+
+This file was compiled by Intel(R) Fortran Intel(R) 64 Compiler
+Classic for applications running on Intel(R) 64, Version 2021.3.0 Build
+20210609_000000
+
+This file was compiled by nvfortran 21.5-0 LLVM
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

compiler_options(3), +iso_fortran_env(7)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/index.html b/learn/intrinsics/index.html new file mode 100644 index 000000000000..db95d1b1007f --- /dev/null +++ b/learn/intrinsics/index.html @@ -0,0 +1,1082 @@ + + + + + + + + + Fortran Intrinsics — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Fortran Intrinsics#

+

This is a collection of extended descriptions of the Fortran intrinsics +based on the reference document +“Current F2018 Working Document as of April 2018”. +Vendor-specific extensions are not included.

+
+ +Intrinsics
+
+
+
+
+
+ +
+
+
+

Overview#

+

The standard documents and most vendor-supplied descriptions of the +intrinsics are often very brief and concise to the point where the +functionality of the intrinsics becomes obscure, particularly to someone +unfamiliar with the procedure.

+

By describing the procedures here

+
    +
  • in greater detail

  • +
  • with a working example

  • +
  • providing links to additional resources +(including additional documents at fortran-lang.org and related +discussions in Fortran Discourse)

  • +
+

these documents strive to clarify the intrinsics for Fortran programmers.

+

This is a community-driven resource and everyone is encouraged to contribute +to the documents. For contribution guidelines see minibook guide +and the following Copyright guidelines.

+
+
+

See Also#

+
    +
  • The Fortran stdlib project

  • +
  • fpm(1) packages, many of +which are general-purpose libraries/modules

  • +
  • M_intrinsics a related project +to leverage the descriptions here to generate man-pages and an OS-agnostic CLI +(Command Line Interface) program. This includes a tar(1) and zip(1) +file of man-pages and a self-contained Fortran program that lets you +view the non-graphical plain ASCII portions of the documentation from +a terminal interface.

  • +
+
+
+

Text Content Copyrights#

+

Many of the documents presented here are modified versions of +man-pages from the Fortran Wiki and as such +are available under the terms of the GNU Free Documentation License +GFDL with no invariant sections, +front-cover texts, or back-cover texts.

+

If you contribute to this site by modifying the files marked as GFDL, +you thereby agree to license the contributed material to the public +under the GFDL (version 1.2 or any later version published by the Free +Software Foundation, with no invariant sections, front-cover texts, +or back-cover texts).

+

If you contribute new material you thereby agree to release it under +the MIT license, and should indicate this by placing MIT on the +specially-formatted last line. For example, change

+
###### fortran-lang intrinsic descriptions
+
+
+

to

+
###### fortran-lang intrinsic descriptions (License: MIT) @urbanjost
+
+
+

Written in Myst-Markdown

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/math/index.html b/learn/intrinsics/math/index.html new file mode 100644 index 000000000000..5b68a9a1bca1 --- /dev/null +++ b/learn/intrinsics/math/index.html @@ -0,0 +1,6496 @@ + + + + + + + + + General mathematical functions — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

General mathematical functions#

+
+

acos#

+
+

Name#

+

acos(3) - [MATHEMATICS:TRIGONOMETRIC] Arccosine (inverse cosine) function

+
+
+

Synopsis#

+
    result = acos(x)
+
+
+
     elemental TYPE(kind=KIND) function acos(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex

  • +
  • KIND may be any kind supported by the associated type.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

acos(3) computes the arccosine of x (inverse of cos(x)).

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the arctangent of.

    +
    +

    If the type is real, the value must satisfy |x| <= 1.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of the same type and kind as x. The real part of +the result is in radians and lies in the range 0 <= acos(x%re) <= PI .

+
+
+

Examples#

+

Sample program:

+
program demo_acos
+use, intrinsic :: iso_fortran_env, only : real_kinds,real32,real64,real128
+implicit none
+character(len=*),parameter :: all='(*(g0,1x))'
+real(kind=real64) :: x , d2r
+
+   ! basics
+    x = 0.866_real64
+    print all,'acos(',x,') is ', acos(x)
+
+   ! acos(-1) should be PI
+    print all,'for reference &
+    &PI ~= 3.14159265358979323846264338327950288419716939937510'
+    write(*,*) acos(-1.0_real64)
+    d2r=acos(-1.0_real64)/180.0_real64
+    print all,'90 degrees is ', d2r*90.0_real64, ' radians'
+   ! elemental
+    print all,'elemental',acos([-1.0,-0.5,0.0,0.50,1.0])
+   ! complex
+    print *,'complex',acos( (-1.0,  0.0) )
+    print *,'complex',acos( (-1.0, -1.0) )
+    print *,'complex',acos( ( 0.0, -0.0) )
+    print *,'complex',acos( ( 1.0,  0.0) )
+
+end program demo_acos
+
+
+

Results:

+
 acos( 0.86599999999999999 ) is  0.52364958093182890
+ for reference PI ~= 3.14159265358979323846264338327950288419716939937510
+    3.1415926535897931
+ 90 degrees is  1.5707963267948966  radians
+ elemental 3.14159274 2.09439516 1.57079637 1.04719758 0.00000000
+  complex            (3.14159274,-0.00000000)
+  complex             (2.23703575,1.06127501)
+  complex             (1.57079637,0.00000000)
+  complex            (0.00000000,-0.00000000)
+
+
+
+
+

Standard#

+

FORTRAN 77 ; for a complex argument - Fortran 2008

+
+
+

See Also#

+

Inverse function: cos(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

acosh#

+
+

Name#

+

acosh(3) - [MATHEMATICS:TRIGONOMETRIC] Inverse hyperbolic cosine function

+
+
+

Synopsis#

+
    result = acosh(x)
+
+
+
     elemental TYPE(kind=KIND) function acosh(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex

  • +
  • KIND may be any kind supported by the associated type.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

acosh(3) computes the inverse hyperbolic cosine of x in radians.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the hyperbolic cosine of

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to a processor-dependent approximation to +the inverse hyperbolic cosine function of X.

+

If x is complex, the imaginary part of the result is in radians +and lies between

+
 0 <= aimag(acosh(x)) <= PI
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_acosh
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=dp), dimension(3) :: x = [ 1.0d0, 2.0d0, 3.0d0 ]
+   write (*,*) acosh(x)
+end program demo_acosh
+
+
+

Results:

+
 0.000000000000000E+000   1.31695789692482        1.76274717403909
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Inverse function: cosh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

asin#

+
+

Name#

+

asin(3) - [MATHEMATICS:TRIGONOMETRIC] Arcsine function

+
+
+

Synopsis#

+
    result = asin(x)
+
+
+
     elemental TYPE(kind=KIND) function asin(x)
+
+      TYPE(kind=KIND) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex

  • +
  • KIND may be any kind supported by the associated type.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

asin(3) computes the arcsine of its argument x.

+

The arcsine is the inverse function of the sine function. It is commonly +used in trigonometry when trying to find the angle when the lengths of +the hypotenuse and the opposite side of a right triangle are known.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the arcsine of

    +
    +

    The type shall be either real and a magnitude that is less than or +equal to one; or be complex.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  • result +The result has a value equal to a processor-dependent approximation +to arcsin(x).

    +

    If x is real the result is real and it is expressed in radians +and lies in the range

    +
  • +
+
        PI/2 <= ASIN (X) <= PI/2.
+
+
+

If the argument (and therefore the result) is imaginary the real part +of the result is in radians and lies in the range

+
    -PI/2 <= real(asin(x)) <= PI/2
+
+
+
+
+

Examples#

+

The arcsine will allow you to find the measure of a right angle when you +know the ratio of the side opposite the angle to the hypotenuse.

+

So if you knew that a train track rose 1.25 vertical miles on a track +that was 50 miles long, you could determine the average angle of incline +of the track using the arcsine. Given

+
 sin(theta) = 1.25 miles/50 miles (opposite/hypotenuse)
+
+
+

Sample program:

+
program demo_asin
+use, intrinsic :: iso_fortran_env, only : dp=>real64
+implicit none
+! value to convert degrees to radians
+real(kind=dp),parameter :: D2R=acos(-1.0_dp)/180.0_dp
+real(kind=dp)           :: angle, rise, run
+character(len=*),parameter :: all='(*(g0,1x))'
+  ! given sine(theta) = 1.25 miles/50 miles (opposite/hypotenuse)
+  ! then taking the arcsine of both sides of the equality yields
+  ! theta = arcsine(1.25 miles/50 miles) ie. arcsine(opposite/hypotenuse)
+  rise=1.250_dp
+  run=50.00_dp
+  angle = asin(rise/run)
+  print all, 'angle of incline(radians) = ', angle
+  angle = angle/D2R
+  print all, 'angle of incline(degrees) = ', angle
+
+  print all, 'percent grade=',rise/run*100.0_dp
+end program demo_asin
+
+
+

Results:

+
    angle of incline(radians) =    2.5002604899361139E-002
+    angle of incline(degrees) =    1.4325437375665075
+    percent grade=   2.5000000000000000
+
+
+

The percentage grade is the slope, written as a percent. To calculate +the slope you divide the rise by the run. In the example the rise is +1.25 mile over a run of 50 miles so the slope is 1.25/50 = 0.025. +Written as a percent this is 2.5 %.

+

For the US, two and 1/2 percent is generally thought of as the upper +limit. This means a rise of 2.5 feet when going 100 feet forward. In +the US this was the maximum grade on the first major US railroad, the +Baltimore and Ohio. Note curves increase the frictional drag on a +train reducing the allowable grade.

+
+
+

Standard#

+

FORTRAN 77 , for a complex argument Fortran 2008

+
+
+

See Also#

+

Inverse function: sin(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

asinh#

+
+

Name#

+

asinh(3) - [MATHEMATICS:TRIGONOMETRIC] Inverse hyperbolic sine function

+
+
+

Synopsis#

+
    result = asinh(x)
+
+
+
     elemental TYPE(kind=KIND) function asinh(x)
+
+      TYPE(kind=KIND) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real or complex type

  • +
  • KIND may be any kind supported by the associated type

  • +
  • The returned value will be of the same type and kind as the argument x

  • +
+
+
+

Description#

+

asinh(3) computes the inverse hyperbolic sine of x.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the inverse hyperbolic sine of

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to a processor-dependent approximation +to the inverse hyperbolic sine function of x.

+

If x is complex, the imaginary part of the result is in radians and lies +between -PI/2 <= aimag(asinh(x)) <= PI/2.

+
+
+

Examples#

+

Sample program:

+
program demo_asinh
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=dp), dimension(3) :: x = [ -1.0d0, 0.0d0, 1.0d0 ]
+
+   ! elemental
+    write (*,*) asinh(x)
+
+end program demo_asinh
+
+
+

Results:

+
  -0.88137358701954305  0.0000000000000000  0.88137358701954305
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Inverse function: sinh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

atan#

+
+

Name#

+

atan(3) - [MATHEMATICS:TRIGONOMETRIC] Arctangent AKA inverse tangent function

+
+
+

Synopsis#

+
    result = atan([x) | atan(y, x)
+
+
+
     elemental TYPE(kind=KIND) function atan(y,x)
+
+      TYPE(kind=KIND),intent(in) :: x
+      TYPE(kind=**),intent(in),optional :: y
+
+
+
+
+

Characteristics#

+
    +
  • If y is present x and y must both be real. +Otherwise, x may be complex.

  • +
  • KIND can be any kind supported by the associated type.

  • +
  • The returned value is of the same type and kind as x.

  • +
+
+
+

Description#

+

atan(3) computes the arctangent of x.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the arctangent of. +if y is present, x shall be real.

    +
    +
    +
  • +
  • +
    y

    is of the same type and kind as x. If x is zero, y +must not be zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The returned value is of the same type and kind as x. If y is +present, the result is identical to atan2(y,x). Otherwise, it is the +arc tangent of x, where the real part of the result is in radians +and lies in the range +-PI/2 <= atan(x) <= PI/2

+
+
+

Examples#

+

Sample program:

+
program demo_atan
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+character(len=*),parameter :: all='(*(g0,1x))'
+real(kind=real64),parameter :: &
+ Deg_Per_Rad = 57.2957795130823208767981548_real64
+real(kind=real64) :: x
+    x=2.866_real64
+    print all, atan(x)
+
+    print all, atan( 2.0d0, 2.0d0),atan( 2.0d0, 2.0d0)*Deg_Per_Rad
+    print all, atan( 2.0d0,-2.0d0),atan( 2.0d0,-2.0d0)*Deg_Per_Rad
+    print all, atan(-2.0d0, 2.0d0),atan(-2.0d0, 2.0d0)*Deg_Per_Rad
+    print all, atan(-2.0d0,-2.0d0),atan(-2.0d0,-2.0d0)*Deg_Per_Rad
+
+end program demo_atan
+
+
+

Results:

+
   1.235085437457879
+   .7853981633974483 45.00000000000000
+   2.356194490192345 135.0000000000000
+   -.7853981633974483 -45.00000000000000
+   -2.356194490192345 -135.0000000000000
+
+
+
+
+

Standard#

+

FORTRAN 77 for a complex argument; and for two +arguments Fortran 2008

+
+
+

See Also#

+

atan2(3), tan(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

atan2#

+
+

Name#

+

atan2(3) - [MATHEMATICS:TRIGONOMETRIC] Arctangent (inverse tangent) +function

+
+
+

Synopsis#

+
    result = atan2(y, x)
+
+
+
     elemental real(kind=KIND) function atan2(y, x)
+
+      real,kind=KIND) :: atan2
+      real,kind=KIND),intent(in) :: y, x
+
+
+
+
+

Characteristics#

+
    +
  • x and y must be reals of the same kind.

  • +
  • The return value has the same type and kind as y and x.

  • +
+
+
+

Description#

+

atan2(3) computes in radians a processor-dependent approximation of +the arctangent of the complex number ( x, y ) or equivalently the +principal value of the arctangent of the value y/x (which determines +a unique angle).

+

If y has the value zero, x shall not have the value zero.

+

The resulting phase lies in the range -PI <= ATAN2 (Y,X) <= PI and is equal to a +processor-dependent approximation to a value of arctan(Y/X).

+
+
+

Options#

+
    +
  • +
    y

    The imaginary component of the complex value (x,y) or the y +component of the point <x,y>.

    +
    +
    +
  • +
  • +
    x

    The real component of the complex value (x,y) or the x +component of the point <x,y>.

    +
    +
    +
  • +
+
+
+

Result#

+

The value returned is by definition the principal value of the complex +number (x, y), or in other terms, the phase of the phasor x+i*y.

+

The principal value is simply what we get when we adjust a radian value +to lie between -PI and PI inclusive,

+

The classic definition of the arctangent is the angle that is formed +in Cartesian coordinates of the line from the origin point <0,0> +to the point <x,y> .

+

Pictured as a vector it is easy to see that if x and y are both +zero the angle is indeterminate because it sits directly over the origin, +so atan(0.0,0.0) will produce an error.

+

Range of returned values by quadrant:

+
>                   +PI/2
+>                     |
+>                     |
+>     PI/2 < z < PI   |   0 > z < PI/2
+>                     |
+>   +-PI -------------+---------------- +-0
+>                     |
+>     PI/2 < -z < PI  |   0 < -z < PI/2
+>                     |
+>                     |
+>                   -PI/2
+>
+     NOTES:
+
+     If the processor distinguishes -0 and +0 then the sign of the
+     returned value is that of Y when Y is zero, else when Y is zero
+     the returned value is always positive.
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_atan2
+real :: z
+complex :: c
+ !
+ ! basic usage
+  ! ATAN2 (1.5574077, 1.0) has the value 1.0 (approximately).
+  z=atan2(1.5574077, 1.0)
+  write(*,*) 'radians=',z,'degrees=',r2d(z)
+ !
+ ! elemental arrays
+  write(*,*)'elemental',atan2( [10.0, 20.0], [30.0,40.0] )
+ !
+ ! elemental arrays and scalars
+  write(*,*)'elemental',atan2( [10.0, 20.0], 50.0 )
+ !
+ ! break complex values into real and imaginary components
+ ! (note TAN2() can take a complex type value )
+  c=(0.0,1.0)
+  write(*,*)'complex',c,atan2( x=c%re, y=c%im )
+ !
+ ! extended sample converting cartesian coordinates to polar
+  COMPLEX_VALS: block
+  real                :: ang, radius
+  complex,allocatable :: vals(:)
+ !
+  vals=[ &
+    ( 1.0, 0.0 ), & ! 0
+    ( 1.0, 1.0 ), & ! 45
+    ( 0.0, 1.0 ), & ! 90
+    (-1.0, 1.0 ), & ! 135
+    (-1.0, 0.0 ), & ! 180
+    (-1.0,-1.0 ), & ! 225
+    ( 0.0,-1.0 )]   ! 270
+  do i=1,size(vals)
+     call cartesian_to_polar(vals(i)%re, vals(i)%im, radius,ang)
+     write(*,101)vals(i),ang,r2d(ang),radius
+  enddo
+  101 format(             &
+  & 'X= ',f5.2,           &
+  & ' Y= ',f5.2,          &
+  & ' ANGLE= ',g0,        &
+  & T38,'DEGREES= ',g0.4, &
+  & T54,'DISTANCE=',g0)
+ endblock COMPLEX_VALS
+!
+contains
+!
+elemental real function r2d(radians)
+! input radians to convert to degrees
+doubleprecision,parameter :: DEGREE=0.017453292519943d0 ! radians
+real,intent(in)           :: radians
+   r2d=radians / DEGREE ! do the conversion
+end function r2d
+!
+subroutine cartesian_to_polar(x,y,radius,inclination)
+! return angle in radians in range 0 to 2*PI
+implicit none
+real,intent(in)  :: x,y
+real,intent(out) :: radius,inclination
+   radius=sqrt(x**2+y**2)
+   if(radius.eq.0)then
+      inclination=0.0
+   else
+      inclination=atan2(y,x)
+      if(inclination < 0.0)inclination=inclination+2*atan2(0.0d0,-1.0d0)
+   endif
+end subroutine cartesian_to_polar
+!
+end program demo_atan2
+
+
+

Results:

+
 >  radians=   1.000000     degrees=   57.29578
+ >  elemental  0.3217506      0.4636476
+ >  elemental  0.1973956      0.3805064
+ >  complex (0.0000000E+00,1.000000)   1.570796
+ > X=  1.00 Y=  0.00 ANGLE= .000000     DEGREES= .000   DISTANCE=1.000000
+ > X=  1.00 Y=  1.00 ANGLE= .7853982    DEGREES= 45.00  DISTANCE=1.414214
+ > X=  0.00 Y=  1.00 ANGLE= 1.570796    DEGREES= 90.00  DISTANCE=1.000000
+ > X= -1.00 Y=  1.00 ANGLE= 2.356194    DEGREES= 135.0  DISTANCE=1.414214
+ > X= -1.00 Y=  0.00 ANGLE= 3.141593    DEGREES= 180.0  DISTANCE=1.000000
+ > X= -1.00 Y= -1.00 ANGLE= 3.926991    DEGREES= 225.0  DISTANCE=1.414214
+ > X=  0.00 Y= -1.00 ANGLE= 4.712389    DEGREES= 270.0  DISTANCE=1.000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+ +
+
+

Resources#

+
    +
  • arctan:wikipedia +fortran-lang intrinsic descriptions (license: MIT) @urbanjost

  • +
+
+
+
+

atanh#

+
+

Name#

+

atanh(3) - [MATHEMATICS:TRIGONOMETRIC] Inverse hyperbolic tangent function

+
+
+

Synopsis#

+
    result = atanh(x)
+
+
+
     elemental TYPE(kind=KIND) function atanh(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be real or complex of any associated type

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

atanh(3) computes the inverse hyperbolic tangent of x.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real or complex.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value has same type and kind as x. If x is complex, the +imaginary part of the result is in radians and lies between

+
       **-PI/2 <= aimag(atanh(x)) <= PI/2**
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_atanh
+implicit none
+real, dimension(3) :: x = [ -1.0, 0.0, 1.0 ]
+
+   write (*,*) atanh(x)
+
+end program demo_atanh
+
+
+

Results:

+
 >       -Infinity  0.0000000E+00       Infinity
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Inverse function: tanh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

cos#

+
+

Name#

+

cos(3) - [MATHEMATICS:TRIGONOMETRIC] Cosine function

+
+
+

Synopsis#

+
    result = cos(x)
+
+
+
     elemental TYPE(kind=KIND) function cos(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is of type real or complex of any valid kind.

  • +
  • KIND may be any kind supported by the associated type of x.

  • +
  • The returned value will be of the same type and kind as the argument +x.

  • +
+
+
+

Description#

+

cos(3) computes the cosine of an angle x given the size of +the angle in radians.

+

The cosine of a real value is the ratio of the adjacent side to the +hypotenuse of a right-angled triangle.

+
+
+

Options#

+
    +
  • +
    x

    The angle in radians to compute the cosine of.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is the tangent of x.

+

If x is of the type real, the return value is in radians and lies in +the range -1 <= cos(x) <= 1 .

+

If x is of type complex, its real part is regarded as a value in +radians, often called the phase.

+
+
+

Examples#

+

Sample program:

+
program demo_cos
+implicit none
+character(len=*),parameter :: g2='(a,t20,g0)'
+doubleprecision,parameter :: PI=atan(1.0d0)*4.0d0
+   write(*,g2)'COS(0.0)=',cos(0.0)
+   write(*,g2)'COS(PI)=',cos(PI)
+   write(*,g2)'COS(PI/2.0d0)=',cos(PI/2.0d0),'EPSILON=',epsilon(PI)
+   write(*,g2)'COS(2*PI)=',cos(2*PI)
+   write(*,g2)'COS(-2*PI)=',cos(-2*PI)
+   write(*,g2)'COS(-2000*PI)=',cos(-2000*PI)
+   write(*,g2)'COS(3000*PI)=',cos(3000*PI)
+end program demo_cos
+
+
+

Results:

+
 > COS(0.0)=          1.000000
+ > COS(PI)=           -1.000000000000000
+ > COS(PI/2.0d0)=     .6123233995736766E-16
+ > EPSILON=           .2220446049250313E-15
+ > COS(2*PI)=         1.000000000000000
+ > COS(-2*PI)=        1.000000000000000
+ > COS(-2000*PI)=     1.000000000000000
+ > COS(3000*PI)=      1.000000000000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

acos(3), +sin(3), +tan(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions

+
+
+
+

cosh#

+
+

Name#

+

cosh(3) - [MATHEMATICS:TRIGONOMETRIC] Hyperbolic cosine function

+
+
+

Synopsis#

+
    result = cosh(x)
+
+
+
     elemental TYPE(kind=KIND) function cosh(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex of any kind.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

cosh(3) computes the hyperbolic cosine of x.

+

If x is of type complex its imaginary part is regarded as a value +in radians.

+
+
+

Options#

+
    +
  • +
    x

    the value to compute the hyperbolic cosine of

    +
    +
    +
  • +
+
+
+

Result#

+

If x is complex, the imaginary part of the result is in radians.

+

If x is real, the return value has a lower bound of one, +cosh(x) >= 1.

+
+
+

Examples#

+

Sample program:

+
program demo_cosh
+use, intrinsic :: iso_fortran_env, only : &
+ & real_kinds, real32, real64, real128
+implicit none
+real(kind=real64) :: x = 1.0_real64
+    write(*,*)'X=',x,'COSH(X=)',cosh(x)
+end program demo_cosh
+
+
+

Results:

+
 >  X=   1.00000000000000      COSH(X=)   1.54308063481524
+
+
+
+
+

Standard#

+

FORTRAN 77 , for a complex argument - Fortran 2008

+
+
+

See Also#

+

Inverse function: acosh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions

+
+
+
+

sin#

+
+

Name#

+

sin(3) - [MATHEMATICS:TRIGONOMETRIC] Sine function

+
+
+

Synopsis#

+
    result = sin(x)
+
+
+
     elemental TYPE(kind=KIND) function sin(x)
+
+      TYPE(kind=KIND) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real or complex type

  • +
  • KIND may be any kind supported by the associated type of x.

  • +
  • The returned value will be of the same type and kind as the argument +x.

  • +
+
+
+

Description#

+

sin(3) computes the sine of an angle given the size of the angle +in radians.

+

The sine of an angle in a right-angled triangle is the ratio of the +length of the side opposite the given angle divided by the length of +the hypotenuse.

+
+
+

Options#

+
    +
  • +
    x

    The angle in radians to compute the sine of.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  • result +The return value contains the processor-dependent approximation of +the sine of x

    +

    If X is of type real, it is regarded as a value in radians.

    +

    If X is of type complex, its real part is regarded as a value +in radians.

    +
  • +
+
+
+

Examples#

+

Sample program:

+
program sample_sin
+implicit none
+real :: x = 0.0
+   x = sin(x)
+   write(*,*)'X=',x
+end program sample_sin
+
+
+

Results:

+
 >  X=  0.0000000E+00
+
+
+
+
+

Extended Example#

+
+

Haversine Formula#

+

From the article on “Haversine formula” in Wikipedia:

+
    The haversine formula is an equation important in navigation,
+    giving great-circle distances between two points on a sphere from
+    their longitudes and latitudes.
+
+
+

So to show the great-circle distance between the Nashville International +Airport (BNA) in TN, USA, and the Los Angeles International Airport +(LAX) in CA, USA you would start with their latitude and longitude, +commonly given as

+
  BNA: N 36 degrees 7.2',   W 86 degrees 40.2'
+  LAX: N 33 degrees 56.4',  W 118 degrees 24.0'
+
+
+

which converted to floating-point values in degrees is:

+
       Latitude Longitude
+
+     - BNA
+       36.12, -86.67
+
+     - LAX
+       33.94, -118.40
+
+
+

And then use the haversine formula to roughly calculate the distance +along the surface of the Earth between the locations:

+

Sample program:

+
program demo_sin
+implicit none
+real :: d
+    d = haversine(36.12,-86.67, 33.94,-118.40) ! BNA to LAX
+    print '(A,F9.4,A)', 'distance: ',d,' km'
+contains
+function haversine(latA,lonA,latB,lonB) result (dist)
+!
+! calculate great circle distance in kilometers
+! given latitude and longitude in degrees
+!
+real,intent(in) :: latA,lonA,latB,lonB
+real :: a,c,dist,delta_lat,delta_lon,lat1,lat2
+real,parameter :: radius = 6371 ! mean earth radius in kilometers,
+! recommended by the International Union of Geodesy and Geophysics
+
+! generate constant pi/180
+real, parameter :: deg_to_rad = atan(1.0)/45.0
+   delta_lat = deg_to_rad*(latB-latA)
+   delta_lon = deg_to_rad*(lonB-lonA)
+   lat1 = deg_to_rad*(latA)
+   lat2 = deg_to_rad*(latB)
+   a = (sin(delta_lat/2))**2 + &
+          & cos(lat1)*cos(lat2)*(sin(delta_lon/2))**2
+   c = 2*asin(sqrt(a))
+   dist = radius*c
+end function haversine
+end program demo_sin
+
+
+

Results:

+
 > distance: 2886.4446 km
+
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

asin(3), +cos(3), +tan(3), +acosh(3), +acos(3), +asinh(3), +atan2(3), +atanh(3), +acosh(3), +asinh(3), +atanh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

sinh#

+
+

Name#

+

sinh(3) - [MATHEMATICS:TRIGONOMETRIC] Hyperbolic sine function

+
+
+

Synopsis#

+
    result = sinh(x)
+
+
+
     elemental TYPE(kind=KIND) function sinh(x)
+
+      TYPE(kind=KIND) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex

  • +
  • KIND may be any kind supported by the associated type.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

sinh(3) computes the hyperbolic sine of x.

+

The hyperbolic sine of x is defined mathematically as:

+
     sinh(x) = (exp(x) - exp(-x)) / 2.0
+
+
+
+
+

Options#

+
    +
  • +
    x

    The value to calculate the hyperbolic sine of

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to a processor-dependent approximation +to sinh(X). If X is of type complex its imaginary part is regarded +as a value in radians.

+
+
+

Examples#

+

Sample program:

+
program demo_sinh
+use, intrinsic :: iso_fortran_env, only : &
+& real_kinds, real32, real64, real128
+implicit none
+real(kind=real64) :: x = - 1.0_real64
+real(kind=real64) :: nan, inf
+character(len=20) :: line
+
+  ! basics
+   print *, sinh(x)
+   print *, (exp(x)-exp(-x))/2.0
+
+  ! sinh(3) is elemental and can handle an array
+   print *, sinh([x,2.0*x,x/3.0])
+
+   ! a NaN input returns NaN
+   line='NAN'
+   read(line,*) nan
+   print *, sinh(nan)
+
+   ! a Inf input returns Inf
+   line='Infinity'
+   read(line,*) inf
+   print *, sinh(inf)
+
+   ! an overflow returns Inf
+   x=huge(0.0d0)
+   print *, sinh(x)
+
+end program demo_sinh
+
+
+

Results:

+
  -1.1752011936438014
+  -1.1752011936438014
+  -1.1752011936438014       -3.6268604078470190      -0.33954055725615012
+                       NaN
+                  Infinity
+                  Infinity
+
+
+
+
+

Standard#

+

Fortran 95 , for a complex argument Fortran 2008

+
+
+

See Also#

+

asinh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

tan#

+
+

Name#

+

tan(3) - [MATHEMATICS:TRIGONOMETRIC] Tangent function

+
+
+

Synopsis#

+
result = tan(x)
+
+
+
 elemental TYPE(kind=KIND) function tan(x)
+
+  TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • the TYPE of x may be real or complex of any supported kind

  • +
  • The returned value will be of the same type and kind as the argument +x.

  • +
+
+
+

Description#

+

tan(3) computes the tangent of x.

+
+
+

Options#

+
    +
  • +
    x

    The angle in radians to compute the tangent of for real input. +If x is of type complex, its real part is regarded as a value +in radians.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is the tangent of the value x.

+
+
+

Examples#

+

Sample program:

+
program demo_tan
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+implicit none
+real(kind=real64) :: x = 0.165_real64
+     write(*,*)x, tan(x)
+end program demo_tan
+
+
+

Results:

+
     0.16500000000000001       0.16651386310913616
+
+
+
+
+

Standard#

+

FORTRAN 77 . For a complex argument, Fortran 2008 .

+
+
+

See Also#

+

atan(3), +atan2(3), +cos(3), +sin(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

tanh#

+
+

Name#

+

tanh(3) - [MATHEMATICS:TRIGONOMETRIC] Hyperbolic tangent function

+
+
+

Synopsis#

+
    result = tanh(x)
+
+
+
     elemental TYPE(kind=KIND) function tanh(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be real or complex and any associated kind supported by +the processor.

  • +
  • The returned value will be of the same type and kind as the argument.

  • +
+
+
+

Description#

+

tanh(3) computes the hyperbolic tangent of x.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the Hyperbolic tangent of.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns the hyperbolic tangent of x.

+

If x is complex, the imaginary part of the result is regarded as +a radian value.

+

If x is real, the return value lies in the range

+
      -1 <= tanh(x) <= 1.
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_tanh
+use, intrinsic :: iso_fortran_env, only : &
+& real_kinds, real32, real64, real128
+implicit none
+real(kind=real64) :: x = 2.1_real64
+   write(*,*)x, tanh(x)
+end program demo_tanh
+
+
+

Results:

+
      2.1000000000000001       0.97045193661345386
+
+
+
+
+

Standard#

+

FORTRAN 77 , for a complex argument Fortran 2008

+
+
+

See Also#

+

atanh(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions

+
+
+
+

random_number#

+
+

Name#

+

random_number(3) - [MATHEMATICS:RANDOM] Pseudo-random number

+
+
+

Synopsis#

+
    call random_number(harvest)
+
+
+
     subroutine random_number(harvest)
+
+      real,intent(out) :: harvest(..)
+
+
+
+
+

Characteristics#

+
    +
  • harvest and the result are default real variables

  • +
+
+
+

Description#

+

random_number(3) returns a single pseudorandom number or an array of +pseudorandom numbers from the uniform distribution over the range +0 <= x < 1.

+
+
+

Options#

+
    +
  • +
    harvest

    Shall be a scalar or an array of type real.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_random_number
+use, intrinsic :: iso_fortran_env, only : dp=>real64
+implicit none
+integer, allocatable :: seed(:)
+integer              :: n
+integer              :: first,last
+integer              :: i
+integer              :: rand_int
+integer,allocatable  :: count(:)
+real(kind=dp)        :: rand_val
+   call random_seed(size = n)
+   allocate(seed(n))
+   call random_seed(get=seed)
+   first=1
+   last=10
+   allocate(count(last-first+1))
+   ! To have a discrete uniform distribution on the integers
+   ! [first, first+1, ..., last-1, last] carve the continuous
+   ! distribution up into last+1-first equal sized chunks,
+   ! mapping each chunk to an integer.
+   !
+   ! One way is:
+   !   call random_number(rand_val)
+   ! choose one from last-first+1 integers
+   !   rand_int = first + FLOOR((last+1-first)*rand_val)
+      count=0
+      ! generate a lot of random integers from 1 to 10 and count them.
+      ! with a large number of values you should get about the same
+      ! number of each value
+      do i=1,100000000
+         call random_number(rand_val)
+         rand_int=first+floor((last+1-first)*rand_val)
+         if(rand_int.ge.first.and.rand_int.le.last)then
+            count(rand_int)=count(rand_int)+1
+         else
+            write(*,*)rand_int,' is out of range'
+         endif
+      enddo
+      write(*,'(i0,1x,i0)')(i,count(i),i=1,size(count))
+end program demo_random_number
+
+
+

Results:

+
   1 10003588
+   2 10000104
+   3 10000169
+   4 9997996
+   5 9995349
+   6 10001304
+   7 10001909
+   8 9999133
+   9 10000252
+   10 10000196
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

random_seed(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

random_seed#

+
+

Name#

+

random_seed(3) - [MATHEMATICS:RANDOM] Initialize a pseudo-random number sequence

+
+
+

Synopsis#

+
    call random_seed( [size] [,put] [,get] )
+
+
+
     subroutine random_seed( size, put, get )
+
+      integer,intent(out),optional :: size
+      integer,intent(in),optional :: put(*)
+      integer,intent(out),optional :: get(*)
+
+
+
+
+

Characteristics#

+
    +
  • size a scalar default integer

  • +
  • put a rank-one default integer array

  • +
  • get a rank-one default integer array

  • +
  • the result

  • +
+
+
+

Description#

+

random_seed(3) restarts or queries the state of the pseudorandom +number generator used by random_number.

+

If random_seed is called without arguments, it is seeded with random +data retrieved from the operating system.

+
+
+

Options#

+
    +
  • +
    size

    specifies the minimum size of the arrays used with the put +and get arguments.

    +
    +
    +
  • +
  • +
    put

    the size of the array must be larger than or equal to the number +returned by the size argument.

    +
    +
    +
  • +
  • +
    get

    It is intent(out) and the size of the array must be larger than +or equal to the number returned by the size argument.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_random_seed
+implicit none
+integer, allocatable :: seed(:)
+integer :: n
+
+   call random_seed(size = n)
+   allocate(seed(n))
+   call random_seed(get=seed)
+   write (*, *) seed
+
+end program demo_random_seed
+
+
+

Results:

+
     -674862499 -1750483360  -183136071  -317862567   682500039
+     349459   344020729 -1725483289
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

random_number(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

exp#

+
+

Name#

+

exp(3) - [MATHEMATICS] Base-e exponential function

+
+
+

Synopsis#

+
    result = exp(x)
+
+
+
     elemental TYPE(kind=KIND) function exp(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be real or complex of any kind.

  • +
  • The return value has the same type and kind as x.

  • +
+
+
+

Description#

+

exp(3) returns the value of e (the base of natural logarithms) +raised to the power of x.

+

e” is also known as Euler’s constant.

+

If x is of type complex, its imaginary part is regarded as a value +in radians such that if (see Euler’s formula):

+
    cx=(re,im)
+
+
+

then

+
    exp(cx) = exp(re) * cmplx(cos(im),sin(im),kind=kind(cx))
+
+
+

Since exp(3) is the inverse function of log(3) the maximum valid magnitude +of the real component of x is log(huge(x)).

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real or complex.

    +
    +
    +
  • +
+
+
+

Result#

+

The value of the result is e**x where e is Euler’s constant.

+

If x is of type complex, its imaginary part is +regarded as a value in radians.

+
+
+

Examples#

+

Sample program:

+
program demo_exp
+implicit none
+real :: x, re, im
+complex :: cx
+
+   x = 1.0
+   write(*,*)"Euler's constant is approximately",exp(x)
+
+   !! complex values
+   ! given
+   re=3.0
+   im=4.0
+   cx=cmplx(re,im)
+
+   ! complex results from complex arguments are Related to Euler's formula
+   write(*,*)'given the complex value ',cx
+   write(*,*)'exp(x) is',exp(cx)
+   write(*,*)'is the same as',exp(re)*cmplx(cos(im),sin(im),kind=kind(cx))
+
+   ! exp(3) is the inverse function of log(3) so
+   ! the real component of the input must be less than or equal to
+   write(*,*)'maximum real component',log(huge(0.0))
+   ! or for double precision
+   write(*,*)'maximum doubleprecision component',log(huge(0.0d0))
+
+   ! but since the imaginary component is passed to the cos(3) and sin(3)
+   ! functions the imaginary component can be any real value
+
+end program demo_exp
+
+
+

Results:

+
 Euler's constant is approximately   2.718282
+ given the complex value  (3.000000,4.000000)
+ exp(x) is (-13.12878,-15.20078)
+ is the same as (-13.12878,-15.20078)
+ maximum real component   88.72284
+ maximum doubleprecision component   709.782712893384
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+ +
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

log#

+
+

Name#

+

log(3) - [MATHEMATICS] Natural logarithm

+
+
+

Synopsis#

+
  result = log(x)
+
+
+
   elemental TYPE(kind=KIND) function log(x)
+
+    TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real or complex kind.

  • +
  • the result is the same type and characteristics as x.

  • +
+
+
+

Description#

+

log(3) computes the natural logarithm of x, i.e. the logarithm to +the base “e”.

+
+
+

Options#

+
    +
  • +
    x

    The value to compute the natural log of. +If x is real, its value shall be greater than zero. +If x is complex, its value shall not be zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The natural logarithm of x. +If x is the complex value (r,i) , the imaginary part “i” is in the range

+
    -PI < i <= PI
+
+
+

If the real part of x is less than zero and the imaginary part of +x is zero, then the imaginary part of the result is approximately +PI if the imaginary part of PI is positive real zero or the +processor does not distinguish between positive and negative real zero, +and approximately -PI if the imaginary part of x is negative +real zero.

+
+
+

Examples#

+

Sample program:

+
program demo_log
+implicit none
+  real(kind(0.0d0)) :: x = 2.71828182845904518d0
+  complex :: z = (1.0, 2.0)
+  write(*,*)x, log(x)    ! will yield (approximately) 1
+  write(*,*)z, log(z)
+end program demo_log
+
+
+

Results:

+
      2.7182818284590451        1.0000000000000000
+   (1.00000000,2.00000000) (0.804718971,1.10714877)
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

log10#

+
+

Name#

+

log10(3) - [MATHEMATICS] Base 10 or common logarithm

+
+
+

Synopsis#

+
    result = log10(x)
+
+
+
     elemental real(kind=KIND) function log10(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any kind of real value

  • +
  • the result is the same type and characteristics as x.

  • +
+
+
+

Description#

+

log10(3) computes the base 10 logarithm of x. This is generally +called the “common logarithm”.

+
+
+

Options#

+
    +
  • +
    x

    A real value > 0 to take the log of.

    +
    +
    +
  • +
+
+
+

Result#

+

The logarithm to base 10 of x

+
+
+

Examples#

+

Sample program:

+
program demo_log10
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+real(kind=real64) :: x = 10.0_real64
+
+   x = log10(x)
+   write(*,'(*(g0))')'log10(',x,') is ',log10(x)
+
+   ! elemental
+   write(*, *)log10([1.0, 10.0, 100.0, 1000.0, 10000.0, &
+                     & 100000.0, 1000000.0, 10000000.0])
+
+end program demo_log10
+
+
+

Results:

+
 > log10(1.000000000000000) is .000000000000000
+ >   0.0000000E+00   1.000000       2.000000       3.000000       4.000000
+ >    5.000000       6.000000       7.000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

sqrt#

+
+

Name#

+

sqrt(3) - [MATHEMATICS] Square-root function

+
+
+

Synopsis#

+
    result = sqrt(x)
+
+
+
     elemental TYPE(kind=KIND) function sqrt(x)
+
+      TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be real or complex.

  • +
  • KIND may be any kind valid for the declared type.

  • +
  • the result has the same characteristics as x.

  • +
+
+
+

Description#

+

sqrt(3) computes the principal square root of x.

+

The number whose square root is being considered is known as the +radicand.

+

In mathematics, a square root of a radicand x is a number y +such that y*y = x.

+

Every nonnegative radicand x has two square roots of the same unique +magnitude, one positive and one negative. The nonnegative square root +is called the principal square root.

+

The principal square root of 9 is 3, for example, even though (-3)*(-3) +is also 9.

+

Square roots of negative numbers are a special case of complex numbers, +where with complex input the components of the radicand need +not be positive in order to have a valid square root.

+
+
+

Options#

+
    +
  • +
    x

    The radicand to find the principal square root of. +If x is real its value must be greater than or equal to zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The principal square root of x is returned.

+

For a complex result the real part is greater than or equal to zero.

+

When the real part of the result is zero, the imaginary part has the +same sign as the imaginary part of x.

+
+
+

Examples#

+

Sample program:

+
program demo_sqrt
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+real(kind=real64) :: x, x2
+complex :: z, z2
+
+  ! basics
+   x = 2.0_real64
+   ! complex
+   z = (1.0, 2.0)
+   write(*,*)'input values ',x,z
+
+   x2 = sqrt(x)
+   z2 = sqrt(z)
+   write(*,*)'output values ',x2,z2
+
+  ! elemental
+  write(*,*)'elemental',sqrt([64.0,121.0,30.0])
+
+  ! alternatives
+   x2 = x**0.5
+   z2 = z**0.5
+   write(*,*)'alternatively',x2,z2
+
+end program demo_sqrt
+
+
+

Results:

+
    input values    2.00000000000000      (1.000000,2.000000)
+    output values    1.41421356237310      (1.272020,0.7861513)
+    elemental   8.000000       11.00000       5.477226
+    alternatively   1.41421356237310      (1.272020,0.7861513)
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See also#

+

exp(3), +log(3), +log10(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

hypot#

+
+

Name#

+

hypot(3) - [MATHEMATICS] Returns the Euclidean distance - the distance between a point and the origin.

+
+
+

Synopsis#

+
    result = hypot(x, y)
+
+
+
     elemental real(kind=KIND) function hypot(x,y)
+
+      real(kind=KIND),intent(in) :: x
+      real(kind=KIND),intent(in) :: y
+
+
+
+
+

Characteristics#

+
    +
  • x,y and the result shall all be real and of the same kind.

  • +
+
+
+

Description#

+

hypot(3) is referred to as the Euclidean distance function. It is +equal to

+
sqrt(x**2+y**2)
+
+
+

without undue underflow or overflow.

+

In mathematics, the Euclidean distance between two points in Euclidean +space is the length of a line segment between two points.

+

hypot(x,y) returns the distance between the point <x,y> and +the origin.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real.

    +
    +
    +
  • +
  • +
    y

    The type and kind type parameter shall be the same as x.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value has the same type and kind type parameter as x.

+

The result is the positive magnitude of the distance of the point +<x,y> from the origin <0.0,0.0> .

+
+
+

Examples#

+

Sample program:

+
program demo_hypot
+use, intrinsic :: iso_fortran_env, only : &
+ & real_kinds, real32, real64, real128
+implicit none
+real(kind=real32) :: x, y
+real(kind=real32),allocatable :: xs(:), ys(:)
+integer :: i
+character(len=*),parameter :: f='(a,/,SP,*(3x,g0,1x,g0:,/))'
+
+   x = 1.e0_real32
+   y = 0.5e0_real32
+
+   write(*,*)
+   write(*,'(*(g0))')'point <',x,',',y,'> is ',hypot(x,y)
+   write(*,'(*(g0))')'units away from the origin'
+   write(*,*)
+
+   ! elemental
+   xs=[  x,  x**2,  x*10.0,  x*15.0, -x**2  ]
+   ys=[  y,  y**2, -y*20.0,  y**2,   -y**2  ]
+
+   write(*,f)"the points",(xs(i),ys(i),i=1,size(xs))
+   write(*,f)"have distances from the origin of ",hypot(xs,ys)
+   write(*,f)"the closest is",minval(hypot(xs,ys))
+
+end program demo_hypot
+
+
+

Results:

+
   point <1.00000000,0.500000000> is 1.11803401
+   units away from the origin
+
+   the points
+      +1.00000000 +0.500000000
+      +1.00000000 +0.250000000
+      +10.0000000 -10.0000000
+      +15.0000000 +0.250000000
+      -1.00000000 -0.250000000
+   have distances from the origin of
+      +1.11803401 +1.03077638
+      +14.1421356 +15.0020828
+      +1.03077638
+   the closest is
+      +1.03077638
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

bessel_j0#

+
+

Name#

+

bessel_j0(3) - [MATHEMATICS] Bessel function of the first kind of order 0

+
+
+

Synopsis#

+
    result = bessel_j0(x)
+
+
+
     elemental real(kind=KIND) function bessel_j0(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • KIND may be any KIND supported by the real type.

  • +
  • The result is the same type and kind as x.

  • +
+
+
+

Description#

+

bessel_j0(3) computes the Bessel function of the first kind +of order 0 of x.

+
+
+

Options#

+
    +
  • +
    x

    The value to operate on.

    +
    +
    +
  • +
+
+
+

Result#

+

the Bessel function of the first kind of order 0 of x. +The result lies in the range -0.4027 <= bessel(0,x) <= 1.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_j0
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+   implicit none
+   real(kind=real64) :: x
+   x = 0.0_real64
+   x = bessel_j0(x)
+   write(*,*)x
+end program demo_bessel_j0
+
+
+

Results:

+
      1.0000000000000000
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j1(3), +bessel_jn(3), +bessel_y0(3), +bessel_y1(3), +bessel_yn(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

bessel_j1#

+
+

Name#

+

bessel_j1(3) - [MATHEMATICS] Bessel function of the first kind of order 1

+
+
+

Synopsis#

+
    result = bessel_j1(x)
+
+
+
     elemental real(kind=KIND) function bessel_j1(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • KIND may be any supported real KIND.

  • +
  • the result is of the same type and kind as x

  • +
+
+
+

Description#

+

bessel_j1(3) computes the Bessel function of the first kind +of order 1 of x.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type real and lies in the range +-0.5818 <= bessel(0,x) <= 0.5818 . It has the same kind as x.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_j1
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+real(kind=real64) :: x = 1.0_real64
+   x = bessel_j1(x)
+   write(*,*)x
+end program demo_bessel_j1
+
+
+

Results:

+
     0.44005058574493350
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j0(3), +bessel_jn(3), +bessel_y0(3), +bessel_y1(3), +bessel_yn(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

bessel_jn#

+
+

Name#

+

bessel_jn(3) - [MATHEMATICS] Bessel function of the first kind

+
+
+

Synopsis#

+
    result = bessel_jn(n, x)
+
+
+
     elemental real(kind=KIND) function bessel_jn(n,x)
+
+      integer(kind=**),intent(in) :: n
+      real(kind=KIND),intent(in) :: x
+
+
+
    +
  • KIND may be any valid value for type real

  • +
  • x is real

  • +
  • The return value has the same type and kind as x.

  • +
+
    result = bessel_jn(n1, n2, x)
+
+
+
     real(kind=KIND) function bessel_jn(n1, n2, ,x)
+
+     integer(kind=**),intent(in) :: n1
+     integer(kind=**),intent(in) :: n2
+     real(kind=KIND),intent(in) :: x
+
+
+
    +
  • n1 is integer

  • +
  • n2 is integer

  • +
  • x is real

  • +
  • The return value has the same type and kind as x.

  • +
+
+
+

Description#

+

bessel_jn( n, x ) computes the Bessel function of the first kind of +order n of x.

+

bessel_jn(n1, n2, x) returns an array with the Bessel +function|Bessel functions of the first kind of the orders n1 +to n2.

+
+
+

Options#

+
    +
  • +
    n

    a non-negative scalar integer..

    +
    +
    +
  • +
  • +
    n1

    a non-negative scalar integer.

    +
    +
    +
  • +
  • +
    n2

    a non-negative scalar integer.

    +
    +
    +
  • +
  • +
    x

    Shall be a scalar for bessel_jn(n,x) or an array +For bessel_jn(n1, n2, x).

    +
    +
    +
  • +
+
+
+

Result#

+

The result value of BESSEL_JN (N, X) is a processor-dependent +approximation to the Bessel function of the first kind and order N +of X.

+

The result of BESSEL_JN (N1, N2, X) is a rank-one array with extent +MAX (N2-N1+1, 0). Element i of the result value of BESSEL_JN (N1, +N2, X) is a processor-dependent approximation to the Bessel function +of the first kind and order N1+i-1 of X.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_jn
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+   & real32, real64, real128
+implicit none
+real(kind=real64) :: x = 1.0_real64
+    x = bessel_jn(5,x)
+    write(*,*)x
+end program demo_bessel_jn
+
+
+

Results:

+
      2.4975773021123450E-004
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j0(3), +bessel_j1(3), +bessel_y0(3), +bessel_y1(3), +bessel_yn(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

bessel_y0#

+
+

Name#

+

bessel_y0(3) - [MATHEMATICS] Bessel function of the second kind of order 0

+
+
+

Synopsis#

+
    result = bessel_y0(x)
+
+
+
     elemental real(kind=KIND) function bessel_y0(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • KIND may be any supported real KIND.

  • +
  • the result characteristics (type, kind) are the same as x

  • +
+
+
+

Description#

+

bessel_y0(3) computes the Bessel function of the second +kind of order 0 of x.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real. +Its value shall be greater than zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type real. It has the same kind as x.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_y0
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+implicit none
+  real(kind=real64) :: x = 0.0_real64
+  x = bessel_y0(x)
+  write(*,*)x
+end program demo_bessel_y0
+
+
+

Results:

+
                    -Infinity
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j0(3), +bessel_j1(3), +bessel_jn(3), +bessel_y1(3), +bessel_yn(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

bessel_y1#

+
+

Name#

+

bessel_y1(3) - [MATHEMATICS] Bessel function of the second kind of order 1

+
+
+

Synopsis#

+
    result = bessel_y1(x)
+
+
+
     elemental real(kind=KIND) function bessel_y1(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • KIND may be any supported real KIND.

  • +
  • the characteristics (type, kind) of the result are the same as x

  • +
+
+
+

Description#

+

bessel_y1(3) computes the Bessel function of the second +kind of order 1 of x.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real. +Its value shall be greater than zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is real. It has the same kind as x.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_y1
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+implicit none
+  real(kind=real64) :: x = 1.0_real64
+  write(*,*)x, bessel_y1(x)
+end program demo_bessel_y1
+
+
+

Results:

+
 >    1.00000000000000      -0.781212821300289
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j0(3), +bessel_j1(3), +bessel_jn(3), +bessel_y0(3), +bessel_yn(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

bessel_yn#

+
+

Name#

+

bessel_yn(3) - [MATHEMATICS] Bessel function of the second kind

+
+
+

Synopsis#

+
    result = bessel_yn(n, x)
+
+
+
     elemental real(kind=KIND) function bessel_yn(n,x)
+
+      integer(kind=**),intent(in) :: n
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • n is integer

  • +
  • x is real

  • +
  • The return value has the same type and kind as x.

  • +
+
    result = bessel_yn(n1, n2, x)
+
+
+
     real(kind=KIND) function bessel_yn(n1, n2, ,x)
+
+      integer(kind=**),intent(in) :: n1
+      integer(kind=**),intent(in) :: n2
+      real(kind=KIND),intent(in) :: x
+
+
+
    +
  • n1 is integer

  • +
  • n2 is integer

  • +
  • x is real

  • +
  • The return value has the same type and kind as x.

  • +
+
+
+

Description#

+

bessel_yn(n, x) computes the Bessel function of the second kind +of order n of x.

+

bessel_yn(n1, n2, x) returns an array with the Bessel +function|Bessel functions of the first kind of the orders n1 +to n2.

+
+
+

Options#

+
    +
  • +
    n

    Shall be a scalar or an array of type integer and non-negative.

    +
    +
    +
  • +
  • +
    n1

    Shall be a non-negative scalar of type integer and non-negative.

    +
    +
    +
  • +
  • +
    n2

    Shall be a non-negative scalar of type integer and non-negative.

    +
    +
    +
  • +
  • +
    x

    A real non-negative value. Note bessel_yn(n1, n2, x) is not +elemental, in which case it must be a scalar.

    +
    +
    +
  • +
+
+
+

Result#

+

The result value of BESSEL_YN (N, X) is a processor-dependent +approximation to the Bessel function of the second kind and order N +of X.

+

The result of BESSEL_YN (N1, N2, X) is a rank-one array with extent +MAX (N2-N1+1, 0). Element i of the result value of BESSEL_YN +(N1, N2, X) is a processor-dependent approximation to the Bessel +function of the second kind and order N1+i-1 of X.

+
+
+

Examples#

+

Sample program:

+
program demo_bessel_yn
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+implicit none
+real(kind=real64) :: x = 1.0_real64
+  write(*,*) x,bessel_yn(5,x)
+end program demo_bessel_yn
+
+
+

Results:

+
      1.0000000000000000       -260.40586662581222
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

bessel_j0(3), +bessel_j1(3), +bessel_jn(3), +bessel_y0(3), +bessel_y1(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

erf#

+
+

Name#

+

erf(3) - [MATHEMATICS] Error function

+
+
+

Synopsis#

+
    result = erf(x)
+
+
+
     elemental real(kind=KIND) function erf(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is of type real

  • +
  • The result is of the same type and kind as x.

  • +
+
+
+

Description#

+

erf(3) computes the error function of x, defined as

+
+\[ +\text{erf}(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{__-t__^2} dt. +\]
+
+
+

Options#

+
    +
  • +
    x

    The type shall be real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type real, of the same kind as x and lies in the +range -1 <= erf(x) <= 1 .

+
+
+

Examples#

+

Sample program:

+
program demo_erf
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+real(kind=real64) :: x = 0.17_real64
+    write(*,*)x, erf(x)
+end program demo_erf
+
+
+

Results:

+
     0.17000000000000001       0.18999246120180879
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

erfc(3), +erf_scaled(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions

+
+
+
+

erfc#

+
+

Name#

+

erfc(3) - [MATHEMATICS] Complementary error function

+
+
+

Synopsis#

+
    result = erfc(x)
+
+
+
     elemental real(kind=KIND) function erfc(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is of type real and any valid kind

  • +
  • KIND is any value valid for type real

  • +
  • the result has the same characteristics as x

  • +
+
+
+

Description#

+

erfc(3) computes the complementary error function of x. Simply +put this is equivalent to 1 - erf(x), but erfc is provided +because of the extreme loss of relative accuracy if erf(x) is +called for large x and the result is subtracted from 1.

+

erfc(x) is defined as

+ +
+\[ +\text{erfc}(x) = 1 - \text{erf}(x) = 1 - \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2} dt. +\]
+
+
+

Options#

+
    +
  • +
    x

    The type shall be real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type real and of the same kind as x. It lies in +the range

+
     0 \<= **erfc**(x) \<= 2.
+
+
+

and is a processor-dependent approximation to the complementary error +function of x ( **1-erf(x) ).

+
+
+

Examples#

+

Sample program:

+
program demo_erfc
+use, intrinsic :: iso_fortran_env, only : &
+ & real_kinds, real32, real64, real128
+implicit none
+real(kind=real64) :: x = 0.17_real64
+   write(*,'(*(g0))')'X=',x, ' ERFC(X)=',erfc(x)
+   write(*,'(*(g0))')'equivalently 1-ERF(X)=',1-erf(x)
+end program demo_erfc
+
+
+

Results:

+
 > X=.1700000000000000 ERFC(X)=.8100075387981912
+ > equivalently 1-ERF(X)=.8100075387981912
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

erf(3) +erf_scaled(3)

+
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

erfc_scaled#

+
+

Name#

+

erfc_scaled(3) - [MATHEMATICS] Scaled complementary error function

+
+
+

Synopsis#

+
    result = erfc_scaled(x)
+
+
+
     elemental real(kind=KIND) function erfc_scaled(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is of type real of any valid kind

  • +
  • KIND is any kind valid for a real type

  • +
  • the result has the same characteristics as x

  • +
+
+
+

Description#

+

erfc_scaled(3) computes the exponentially-scaled complementary +error function of x:

+
+\[ +e^{x^2} \frac{2}{\sqrt{\pi}} \int_{x}^{\infty} +e^{-t^2} dt. +\]
+

erfc_scaled(x)=exp(x*x)erfc(x)

+
+

NOTE1#

+

The complementary error function is asymptotic to +exp(-X2)/(X/PI). As such it underflows at approximately X >= 9 when +using ISO/IEC/IEEE 60559:2011 single precision arithmetic. The +exponentially-scaled complementary error function is asymptotic to +1/(X PI). As such it does not underflow until X > HUGE (X)/PI.

+
+
+
+

Options#

+
    +
  • x +the value to apply the erfc function to

  • +
+
+
+

Result#

+

The approximation to the exponentially-scaled complementary error function +of x

+
+
+

Examples#

+

Sample program:

+
program demo_erfc_scaled
+implicit none
+real(kind(0.0d0)) :: x = 0.17d0
+   x = erfc_scaled(x)
+   print *, x
+end program demo_erfc_scaled
+
+
+

Results:

+
 >   0.833758302149981
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

erf(3), +exp(3), +erfc(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

gamma#

+
+

Name#

+

gamma(3) - [MATHEMATICS] Gamma function, which yields factorials for positive whole numbers

+
+
+

Synopsis#

+
    result = gamma(x)
+
+
+
     elemental real(kind=KIND) function gamma( x)
+
+      type(real,kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is a real value

  • +
  • returns a real value with the kind as x.

  • +
+
+
+

Description#

+

gamma(x) computes Gamma of x. For positive whole number values of n the +Gamma function can be used to calculate factorials, as (n-1)! == gamma(real(n)). +That is

+
n! == gamma(real(n+1))
+
+
+
+\[\begin{split} +\\__Gamma__(x) = \\int\_0\*\*\\infty +t\*\*{x-1}{\\mathrm{e}}\*\*{__-t__}\\,{\\mathrm{d}}t +\end{split}\]
+
+
+

Options#

+
    +
  • +
    x

    Shall be of type real and neither zero nor a negative integer.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type real of the same kind as x. The result +has a value equal to a processor-dependent approximation to the gamma +function of x.

+
+
+

Examples#

+

Sample program:

+
program demo_gamma
+use, intrinsic :: iso_fortran_env, only : wp=>real64
+implicit none
+real :: x, xa(4)
+integer :: i
+
+   x = gamma(1.0)
+   write(*,*)'gamma(1.0)=',x
+
+   ! elemental
+   xa=gamma([1.0,2.0,3.0,4.0])
+   write(*,*)xa
+   write(*,*)
+
+   ! gamma(3) is related to the factorial function
+   do i=1,20
+      ! check value is not too big for default integer type
+      if(factorial(i).gt.huge(0))then
+         write(*,*)i,factorial(i)
+      else
+         write(*,*)i,factorial(i),int(factorial(i))
+      endif
+   enddo
+   ! more factorials
+   FAC: block
+   integer,parameter :: n(*)=[0,1,5,11,170]
+   integer :: j
+      do j=1,size(n)
+         write(*,'(*(g0,1x))')'factorial of', n(j),' is ', &
+          & product([(real(i,kind=wp),i=1,n(j))]),  &
+          & gamma(real(n(j)+1,kind=wp))
+      enddo
+   endblock FAC
+
+   contains
+   function factorial(i) result(f)
+   integer,parameter :: dp=kind(0d0)
+   integer,intent(in) :: i
+   real :: f
+      if(i.le.0)then
+         write(*,'(*(g0))')'<ERROR> gamma(3) function value ',i,' <= 0'
+         stop      '<STOP> bad value in gamma function'
+      endif
+      f=gamma(real(i+1))
+   end function factorial
+end program demo_gamma
+
+
+

Results:

+
    gamma(1.0)=   1.000000
+      1.000000       1.000000       2.000000       6.000000
+
+              1   1.000000               1
+              2   2.000000               2
+              3   6.000000               6
+              4   24.00000              24
+              5   120.0000             120
+              6   720.0000             720
+              7   5040.000            5040
+              8   40320.00           40320
+              9   362880.0          362880
+             10   3628800.         3628800
+             11  3.9916800E+07    39916800
+             12  4.7900160E+08   479001600
+             13  6.2270208E+09
+             14  8.7178289E+10
+             15  1.3076744E+12
+             16  2.0922791E+13
+             17  3.5568741E+14
+             18  6.4023735E+15
+             19  1.2164510E+17
+             20  2.4329020E+18
+   factorial of 0  is  1.000000000000000 1.000000000000000
+   factorial of 1  is  1.000000000000000 1.000000000000000
+   factorial of 5  is  120.0000000000000 120.0000000000000
+   factorial of 11  is  39916800.00000000 39916800.00000000
+   factorial of 170  is  .7257415615307994E+307 .7257415615307999E+307
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Logarithm of the Gamma function: log_gamma(3)

+
+
+

Resources#

+

Wikipedia: Gamma_function

+

fortran-lang intrinsic descriptions

+
+
+
+

log_gamma#

+
+

Name#

+

log_gamma(3) - [MATHEMATICS] Logarithm of the absolute value of +the Gamma function

+
+
+

Synopsis#

+
    result = log_gamma(x)
+
+
+
     elemental real(kind=KIND) function log_gamma(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real type

  • +
  • the return value is of same type and kind as x.

  • +
+
+
+

Description#

+

log_gamma(3) computes the natural logarithm of the absolute value +of the Gamma function.

+
+
+

Options#

+
    +
  • +
    x

    neither negative nor zero value to render the result for.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to a processor-dependent approximation +to the natural logarithm of the absolute value of the gamma function +of x.

+
+
+

Examples#

+

Sample program:

+
program demo_log_gamma
+implicit none
+real :: x = 1.0
+   write(*,*)x,log_gamma(x) ! returns 0.0
+   write(*,*)x,log_gamma(3.0) ! returns 0.693 (approximately)
+end program demo_log_gamma
+
+
+

Results:

+
 >    1.000000      0.0000000E+00
+ >    1.000000      0.6931472
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Gamma function: gamma(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

log_gamma#

+
+

Name#

+

log_gamma(3) - [MATHEMATICS] Logarithm of the absolute value of +the Gamma function

+
+
+

Synopsis#

+
    result = log_gamma(x)
+
+
+
     elemental real(kind=KIND) function log_gamma(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real type

  • +
  • the return value is of same type and kind as x.

  • +
+
+
+

Description#

+

log_gamma(3) computes the natural logarithm of the absolute value +of the Gamma function.

+
+
+

Options#

+
    +
  • +
    x

    neither negative nor zero value to render the result for.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to a processor-dependent approximation +to the natural logarithm of the absolute value of the gamma function +of x.

+
+
+

Examples#

+

Sample program:

+
program demo_log_gamma
+implicit none
+real :: x = 1.0
+   write(*,*)x,log_gamma(x) ! returns 0.0
+   write(*,*)x,log_gamma(3.0) ! returns 0.693 (approximately)
+end program demo_log_gamma
+
+
+

Results:

+
 >    1.000000      0.0000000E+00
+ >    1.000000      0.6931472
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

Gamma function: gamma(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

norm2#

+
+

Name#

+

norm2(3) - [MATHEMATICS] Euclidean vector norm

+
+
+

Synopsis#

+
    result = norm2(array, [dim])
+
+
+
     real(kind=KIND) function norm2(array, dim)
+
+      real(kind=KIND),intent(in) :: array(..)
+      integer(kind=**),intent(in),optional :: dim
+
+
+
+
+

Characteristics#

+
    +
  • array shall be an array of type real.

  • +
  • dim shall be a scalar of type integer

  • +
  • The result is of the same type as array.

  • +
+
+
+

Description#

+

norm2(3) calculates the Euclidean vector norm (L_2 norm or +generalized L norm) of array along dimension dim.

+
+
+

Options#

+
    +
  • +
    array

    the array of input values for the L_2 norm computations

    +
    +
    +
  • +
  • +
    dim

    a value in the range from 1 to rank(array).

    +
    +
    +
  • +
+
+
+

Result#

+

If dim is absent, a scalar with the square root of the sum of squares +of the elements of array is returned.

+

Otherwise, an array of rank n-1, where n equals the rank of +array, and a shape similar to that of array with dimension DIM +dropped is returned.

+
  Case (i):     The result of NORM2 (X) has a value equal to a
+                processor-dependent approximation to the generalized
+                L norm of X, which is the square root of the sum of
+                the squares of the elements of X. If X has size zero,
+                the result has the value zero.
+
+  Case (ii):    The result of NORM2 (X, DIM=DIM) has a value equal
+                to that of NORM2 (X) if X has rank one. Otherwise,
+                the resulting array is reduced in rank with dimension
+                **dim** removed, and each remaining elment is the
+                result of NORM2(X) for the values along dimension
+                **dim**.
+
+
+

It is recommended that the processor compute the result without undue +overflow or underflow.

+
+
+

Examples#

+

Sample program:

+
program demo_norm2
+implicit none
+integer :: i
+real :: x(2,3) = reshape([ &
+   1, 2, 3, &
+   4, 5, 6  &
+   ],shape(x),order=[2,1])
+
+  write(*,*) 'input in row-column order'
+  write(*,*) 'x='
+  write(*,'(4x,3f4.0)')transpose(x)
+  write(*,*)
+  write(*,*) 'norm2(x)=',norm2(x)
+  write(*,*) 'which is equivalent to'
+  write(*,*) 'sqrt(sum(x**2))=',sqrt(sum(x**2))
+  write(*,*)
+  write(*,*) 'for reference the array squared is'
+  write(*,*) 'x**2='
+  write(*,'(4x,3f4.0)')transpose(x**2)
+  write(*,*)
+  write(*,*) 'norm2(x,dim=1)=',norm2(x,dim=1)
+  write(*,*) 'norm2(x,dim=2)=',norm2(x,dim=2)
+  write(*,*) '(sqrt(sum(x(:,i)**2)),i=1,3)=',(sqrt(sum(x(:,i)**2)),i=1,3)
+  write(*,*) '(sqrt(sum(x(i,:)**2)),i=1,2)=',(sqrt(sum(x(i,:)**2)),i=1,2)
+
+end program demo_norm2
+
+
+

Results:

+
 >  input in row-column order
+ >  x=
+ >       1.  2.  3.
+ >       4.  5.  6.
+ >
+ >  norm2(x)=   9.539392
+ >  which is equivalent to
+ >  sqrt(sum(x**2))=   9.539392
+ >
+ >  for reference the array squared is
+ >  x**2=
+ >       1.  4.  9.
+ >      16. 25. 36.
+ >
+ >  norm2(x,dim=1)=   4.123106       5.385165       6.708204
+ >  norm2(x,dim=2)=   3.741657       8.774964
+ >  (sqrt(sum(x(:,i)**2)),i=1,3)=   4.123106       5.385165       6.708204
+ >  (sqrt(sum(x(i,:)**2)),i=1,2)=   3.741657       8.774964
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

product(3), +sum(3), +hypot(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/model/index.html b/learn/intrinsics/model/index.html new file mode 100644 index 000000000000..ab30377e6e43 --- /dev/null +++ b/learn/intrinsics/model/index.html @@ -0,0 +1,3451 @@ + + + + + + + + + Controlling and querying the current numeric model — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Controlling and querying the current numeric model#

+
+

exponent#

+
+

Name#

+

exponent(3) - [MODEL_COMPONENTS] Exponent of floating-point number

+
+
+

Synopsis#

+
    result = exponent(x)
+
+
+
     elemental integer function exponent(x)
+
+      real(kind=**),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x shall be of type real of any valid kind

  • +
  • the result is a default integer type

  • +
+
+
+

Description#

+

exponent(3) returns the value of the exponent part of x, provided +the exponent is within the range of default integers.

+
+
+

Options#

+
    +
  • +
    x

    the value to query the exponent of

    +
    +
    +
  • +
+
+
+

Result#

+

exponent(3) returns the value of the exponent part of x

+

If x is zero the value returned is zero.

+

If x is an IEEE infinity or NaN, the result has the value HUGE(0).

+
+
+

Examples#

+

Sample program:

+
program demo_exponent
+implicit none
+real :: x = 1.0
+integer :: i
+   i = exponent(x)
+   print *, i
+   print *, exponent(0.0)
+   print *, exponent([10.0,100.0,1000.0,-10000.0])
+   print *, 2**[10.0,100.0,1000.0,-10000.0]
+   print *, exponent(huge(0.0))
+   print *, exponent(tiny(0.0))
+end program demo_exponent
+
+
+

Results:

+
 >            4           7          10          14
+ >          128
+ >         -125
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

fraction#

+
+

Name#

+

fraction(3) - [MODEL_COMPONENTS] Fractional part of the model representation

+
+
+

Synopsis#

+
    result = fraction(x)
+
+
+
     elemental real(kind=KIND) function fraction(x)
+
+      real(kind=KIND),intent(in) :: fraction
+
+
+
+
+

Characteristics#

+
    +
  • x is of type real

  • +
  • The result has the same characteristics as the argument.

  • +
+
+
+

Description#

+

fraction(3) returns the fractional part of the model representation +of x.

+
+
+

Options#

+
    +
  • +
    x

    The value to interrogate

    +
    +
    +
  • +
+
+
+

Result#

+

The fractional part of the model representation of x is returned; +it is x * radix(x)**(-exponent(x)).

+

If x has the value zero, the result is zero.

+

If x is an IEEE NaN, the result is that NaN.

+

If x is an IEEE infinity, the result is an IEEE NaN.

+
+
+

Examples#

+

Sample program:

+
program demo_fraction
+implicit none
+real :: x
+   x = 178.1387e-4
+   print *, fraction(x), x * radix(x)**(-exponent(x))
+end program demo_fraction
+
+
+

Results:

+
     0.5700439      0.5700439
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

nearest#

+
+

Name#

+

nearest(3) - [MODEL_COMPONENTS] Nearest representable number

+
+
+

Synopsis#

+
    result = nearest(x, s)
+
+
+
     elemental real(kind=KIND) function nearest(x,s)
+
+      real(kind=KIND),intent(in) :: x
+      real(kind=**),intent(in) :: s
+
+
+
+
+

Characteristics#

+
    +
  • x may be a real value of any kind.

  • +
  • s may be a real value of any kind.

  • +
  • The return value is of the same type and kind as x.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

nearest(3) returns the processor-representable number nearest to +x in the direction indicated by the sign of s.

+
+
+

Options#

+
    +
  • +
    x

    the value to find the nearest representable value of

    +
    +
    +
  • +
  • +
    s

    a non-zero value whose sign is used to determine the direction in +which to search from x to the representable value.

    +
    +
    +

    If s is positive, nearest returns the processor-representable +number greater than x and nearest to it.

    +

    If s is negative, nearest returns the processor-representable +number smaller than x and nearest to it.

    +
  • +
+
+
+

Result#

+

The return value is of the same type as x. If s is positive, nearest +returns the processor-representable number greater than x and nearest to +it. If s is negative, nearest returns the processor-representable number +smaller than x and nearest to it.

+
+
+

Examples#

+

Sample program:

+
program demo_nearest
+implicit none
+
+   real :: x, y
+   x = nearest(42.0, 1.0)
+   y = nearest(42.0, -1.0)
+   write (*,"(3(g20.15))") x, y, x - y
+
+!  write (*,"(3(g20.15))") &
+!   nearest(tiny(0.0),1.0), &
+!   nearest(tiny(0.0),-1.0), &
+!   nearest(tiny(0.0),1.0) -nearest(tiny(0.0),-1.0)
+
+!  write (*,"(3(g20.15))") &
+!   nearest(huge(0.0),1.0), &
+!   nearest(huge(0.0),-1.0), &
+!   nearest(huge(0.0),1.0)- nearest(huge(0.0),-1.0)
+
+end program demo_nearest
+
+
+

Results:

+
   42.0000038146973    41.9999961853027    .762939453125000E-05
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

rrspacing#

+
+

Name#

+

rrspacing(3) - [MODEL_COMPONENTS] Reciprocal of the relative spacing of a numeric type

+
+
+

Synopsis#

+
    result = rrspacing(x)
+
+
+
     elemental real(kind=KIND) function rrspacing(x)
+
+      real(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is type real an any kind

  • +
  • The return value is of the same type and kind as x.

  • +
+
+
+

Description#

+

rrspacing(3) returns the reciprocal of the relative spacing of model +numbers near x.

+ +
+
+

Options#

+
    +
  • +
    x

    Shall be of type real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of the same type and kind as x. The value returned +is equal to abs(fraction(x)) * float(radix(x))**digits(x).

+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

scale#

+
+

Name#

+

scale(3) - [MODEL_COMPONENTS] Scale a real value by a whole power of the radix

+
+
+

Synopsis#

+
    result = scale(x, i)
+
+
+
     elemental real(kind=KIND) function scale(x, i)
+
+      real(kind=KIND),intent(in)   :: x
+      integer(kind=**),intent(in)  :: i
+
+
+
+
+

Characteristics#

+
    +
  • x is type real of any kind

  • +
  • i is type an integer of any kind

  • +
  • the result is real of the same kind as x

  • +
+
+
+

Description#

+

scale(3) returns x * radix(x)**i.

+

It is almost certain the radix(base) of the platform is two, therefore +scale(3) is generally the same as x*2**i

+
+
+

Options#

+
    +
  • +
    x

    the value to multiply by radix(x)**i. Its type and kind is used +to determine the radix for values with its characteristics and determines +the characteristics of the result, so care must be taken the returned +value is within the range of the characteristics of x.

    +
    +
    +
  • +
  • +
    i

    The power to raise the radix of the machine to

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is x * radix(x)**i, assuming that value can be +represented by a value of the type and kind of x.

+
+
+

Examples#

+

Sample program:

+
program demo_scale
+implicit none
+real :: x = 178.1387e-4
+integer :: i = 5
+   print *, scale(x,i), x*radix(x)**i
+end program demo_scale
+
+
+

Results:

+
    0.570043862      0.570043862
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

set_exponent#

+
+

Name#

+

set_exponent(3) - [MODEL_COMPONENTS] real value with specified exponent

+
+
+

Synopsis#

+
    result = set_exponent(x, i)
+
+
+
     elemental real(kind=KIND) function set_exponent(x,i)
+
+      real(kind=KIND),intent(in) :: x
+      integer(kind=**),intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • x is type real

  • +
  • i is type integer

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
  • The return value is of the same type and kind as x.

  • +
+
+
+

Description#

+

set_exponent(3) returns the real number whose fractional part is +that of x and whose exponent part is i.

+
+
+

Options#

+
    +
  • +
    x

    Shall be of type real.

    +
    +
    +
  • +
  • +
    i

    Shall be of type integer.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of the same type and kind as x. The real number +whose fractional part is that of x and whose exponent part +if i is returned; it is fraction(x) * radix(x)**i.

+

If x has the value zero, the result has the same value as x.

+

If x is an IEEE infinity, the result is an IEEE NaN.

+

If x is an IEEE NaN, the result is the same NaN.

+
+
+

Examples#

+

Sample program:

+
program demo_setexp
+implicit none
+real :: x = 178.1387e-4
+integer :: i = 17
+   print *, set_exponent(x, i), fraction(x) * radix(x)**i
+end program demo_setexp
+
+
+

Results:

+
      74716.7891       74716.7891
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

spacing#

+
+

Name#

+

spacing(3) - [MODEL_COMPONENTS] Smallest distance between two numbers of a given type

+
+
+

Synopsis#

+
    result = spacing(x)
+
+
+
     elemental real(kind=KIND) function spacing(x)
+
+      real(kind=KIND), intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is type real of any valid kind

  • +
  • The result is of the same type as the input argument x.

  • +
+
+
+

Description#

+

spacing(3) determines the distance between the argument x +and the nearest adjacent number of the same type.

+
+
+

Options#

+
    +
  • +
    x

    Shall be of type real.

    +
    +
    +
  • +
+
+
+

Result#

+

If x does not have the value zero and is not an IEEE infinity or NaN, the result has the value +nearest to x for values of the same type and kind assuming the value is representable.

+

Otherwise, the value is the same as tiny(x). + zero produces tiny(x) + IEEE Infinity produces an IEEE Nan + if an IEEE NaN, that NaN is returned

+

If there are two extended model values equally near to x, the +value of greater absolute value is taken.

+ +
+
+

Examples#

+

Sample program:

+
program demo_spacing
+implicit none
+integer, parameter :: sgl = selected_real_kind(p=6, r=37)
+integer, parameter :: dbl = selected_real_kind(p=13, r=200)
+
+   write(*,*) spacing(1.0_sgl)
+   write(*,*) nearest(1.0_sgl,+1.0),nearest(1.0_sgl,+1.0)-1.0
+
+   write(*,*) spacing(1.0_dbl)
+end program demo_spacing
+
+
+

Results:

+

Typical values …

+
     1.1920929E-07
+      1.000000      1.1920929E-07
+     0.9999999     -5.9604645E-08
+     2.220446049250313E-016
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

digits#

+
+

Name#

+

digits(3) - [NUMERIC MODEL] Significant digits in the numeric model

+
+
+

Synopsis#

+
    result = digits(x)
+
+
+
     integer function digits(x)
+
+      TYPE(kind=KIND),intent(in) :: x(..)
+
+
+
+
+

Characteristics#

+
    +
  • x an integer or real scalar or array

  • +
  • The return value is an integer of default kind.

  • +
+
+
+

Description#

+

digits(3) returns the number of significant digits of the internal +model representation of x. For example, on a system using a 32-bit +floating point representation, a default real number would likely +return 24.

+
+
+

Options#

+
    +
  • +
    x

    a value of the type and kind to query

    +
    +
    +
  • +
+
+
+

Result#

+

The number of significant digits in a variable of the type and kind +of x.

+
+
+

Examples#

+

Sample program:

+
program demo_digits
+implicit none
+integer :: i = 12345
+real :: x = 3.143
+doubleprecision :: y = 2.33d0
+   print *,'default integer:', digits(i)
+   print *,'default real:   ', digits(x)
+   print *,'default doubleprecision:', digits(y)
+end program demo_digits
+
+
+

Results:

+
 >  default integer:          31
+ >  default real:             24
+ >  default doubleprecision:          53
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

epsilon#

+
+

Name#

+

epsilon(3) - [NUMERIC MODEL] Epsilon function

+
+
+

Synopsis#

+
    result = epsilon(x)
+
+
+
     real(kind=kind(x)) function epsilon(x)
+
+      real(kind=kind(x),intent(in)   :: x(..)
+
+
+
+
+

Characteristics#

+
    +
  • x shall be of type real. It may be a scalar or an array.

  • +
  • the result is a scalar of the same type and kind type parameter as x.

  • +
+
+
+

Description#

+

epsilon(3) returns the floating point relative accuracy. +It is the nearly negligible number relative to 1 +such that 1+ little_number is not equal to 1; or more +precisely

+
   real( 1.0, kind(x)) + epsilon(x) /=  real( 1.0, kind(x))
+
+
+

It may be thought of as the distance from 1.0 to the next largest +floating point number.

+

One use of epsilon(3) is to select a delta value for algorithms that +search until the calculation is within delta of an estimate.

+

If delta is too small the algorithm might never halt, as a computation +summing values smaller than the decimal resolution of the data type does +not change.

+
+
+

Options#

+
    +
  • +
    x

    The type shall be real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of the same type as the argument.

+
+
+

Examples#

+

Sample program:

+
program demo_epsilon
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=sp) :: x = 3.143
+real(kind=dp) :: y = 2.33d0
+
+   ! so if x is of type real32, epsilon(x) has the value 2**-23
+   print *, epsilon(x)
+   ! note just the type and kind of x matter, not the value
+   print *, epsilon(huge(x))
+   print *, epsilon(tiny(x))
+
+   ! the value changes with the kind of the real value though
+   print *, epsilon(y)
+
+   ! adding and subtracting epsilon(x) changes x
+   write(*,*)x == x + epsilon(x)
+   write(*,*)x == x - epsilon(x)
+
+   ! these next two comparisons will be .true. !
+   write(*,*)x == x + epsilon(x) * 0.999999
+   write(*,*)x == x - epsilon(x) * 0.999999
+
+   ! you can calculate epsilon(1.0d0)
+   write(*,*)my_dp_eps()
+
+contains
+
+   function my_dp_eps()
+   ! calculate the epsilon value of a machine the hard way
+   real(kind=dp) :: t
+   real(kind=dp) :: my_dp_eps
+
+      ! starting with a value of 1, keep dividing the value
+      ! by 2 until no change is detected. Note that with
+      ! infinite precision this would be an infinite loop,
+      ! but floating point values in Fortran have a defined
+      ! and limited precision.
+      my_dp_eps = 1.0d0
+      SET_ST: do
+         my_dp_eps = my_dp_eps/2.0d0
+         t = 1.0d0 + my_dp_eps
+         if (t <= 1.0d0) exit
+      enddo SET_ST
+      my_dp_eps = 2.0d0*my_dp_eps
+
+   end function my_dp_eps
+end program demo_epsilon
+
+
+

Results:

+
  1.1920929E-07
+  1.1920929E-07
+  1.1920929E-07
+  2.220446049250313E-016
+ F
+ F
+ T
+ T
+  2.220446049250313E-016
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

huge#

+
+

Name#

+

huge(3) - [NUMERIC MODEL] Largest number of a type and kind

+
+
+

Synopsis#

+
    result = huge(x)
+
+
+
     TYPE(kind=KIND) function huge(x)
+
+      TYPE(kind=KIND),intent(in) :: x(..)
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real or integer scalar or array and any kind.

  • +
  • The result will be a scalar of the same type and kind as the input x

  • +
+
+
+

Description#

+

huge(3) returns the largest number that is not an overflow +for the kind and type of x.

+
+
+

Options#

+
    +
  • +
    x

    x is an arbitrary value which is used merely to determine what +kind and type of scalar is being queried. It need not be defined, +as only its characteristics are used.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is the largest value supported by the specified type +and kind.

+

Note the result is as the same kind as the input to ensure the returned +value does not overflow. Any assignment of the result to a variable +should take this into consideration.

+
+
+

Examples#

+

Sample program:

+
program demo_huge
+implicit none
+character(len=*),parameter :: f='(i2,1x,2(i11,1x),f14.0:,1x,l1,1x,a)'
+integer :: i,j,k,biggest
+real :: v, w
+   ! basic
+   print *, huge(0), huge(0.0), huge(0.0d0)
+   print *, tiny(0.0), tiny(0.0d0)
+
+   sum=0.0d0
+   ! note subtracting one because counter is the end value+1 on exit
+   do i=0,huge(0)-1
+      sum=sum+i
+   enddo
+   write(*,*)'sum=',sum
+
+   ! advanced
+   biggest=huge(0)
+   ! be careful of overflow when using integers in computation
+   do i=1,14
+      j=6**i   ! Danger, Danger
+      w=6**i   ! Danger, Danger
+      v=6.0**i
+      k=v      ! Danger, Danger
+
+      if(v.gt.biggest)then
+         write(*,f) i, j, k, v, v.eq.w, 'wrong j and k and w'
+      else
+         write(*,f) i, j, k, v, v.eq.w
+      endif
+
+   enddo
+end program demo_huge
+
+
+

Results:

+
  2147483647  3.4028235E+38  1.797693134862316E+308
+  1.1754944E-38  2.225073858507201E-308
+
+    1      6           6             6. T
+    2      36          36            36. T
+    3      216         216           216. T
+    4      1296        1296          1296. T
+    5      7776        7776          7776. T
+    6      46656       46656         46656. T
+    7      279936      279936        279936. T
+    8      1679616     1679616       1679616. T
+    9      10077696    10077696      10077696. T
+    10     60466176    60466176      60466176. T
+    11     362797056   362797056     362797056. T
+    12    -2118184960 -2147483648    2176782336. F wrong for j and k and w
+    13     175792128  -2147483648   13060694016. F wrong for j and k and w
+    14     1054752768 -2147483648   78364164096. F wrong for j and k and w
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

maxexponent#

+
+

Name#

+

maxexponent(3) - [NUMERIC MODEL] Maximum exponent of a real kind

+
+
+

Synopsis#

+
    result = maxexponent(x)
+
+
+
     elemental integer function maxexponent(x)
+
+      real(kind=**),intent(in)   :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is a real scalar or array of any real kind

  • +
  • the result is a default integer scalar

  • +
+
+
+

Description#

+

maxexponent(3) returns the maximum exponent in the model of the +type of x.

+
+
+

Options#

+
    +
  • +
    x

    A value used to select the kind of real to return a value for.

    +
    +
    +
  • +
+
+
+

Result#

+

The value returned is the maximum exponent for the kind of the value +queried

+
+
+

Examples#

+

Sample program:

+
program demo_maxexponent
+use, intrinsic :: iso_fortran_env, only : real32,real64,real128
+implicit none
+character(len=*),parameter :: g='(*(g0,1x))'
+   print  g,  minexponent(0.0_real32),   maxexponent(0.0_real32)
+   print  g,  minexponent(0.0_real64),   maxexponent(0.0_real64)
+   print  g,  minexponent(0.0_real128),  maxexponent(0.0_real128)
+end program demo_maxexponent
+
+
+

Results:

+
   -125 128
+   -1021 1024
+   -16381 16384
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

minexponent#

+
+

Name#

+

minexponent(3) - [NUMERIC MODEL] Minimum exponent of a real kind

+
+
+

Synopsis#

+
    result = minexponent(x)
+
+
+
     elemental integer function minexponent(x)
+
+      real(kind=**),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x is a real scalar or array of any real kind

  • +
  • the result is a default integer scalar

  • +
+
+
+

Description#

+

minexponent(3) returns the minimum exponent in the model of the +type of x.

+
+
+

Options#

+
    +
  • +
    x

    A value used to select the kind of real to return a value for.

    +
    +
    +
  • +
+
+
+

Result#

+

The value returned is the maximum exponent for the kind of the value +queried

+
+
+

Examples#

+

Sample program:

+
program demo_minexponent
+use, intrinsic :: iso_fortran_env, only : &
+ &real_kinds, real32, real64, real128
+implicit none
+real(kind=real32) :: x
+real(kind=real64) :: y
+    print *, minexponent(x), maxexponent(x)
+    print *, minexponent(y), maxexponent(y)
+end program demo_minexponent
+
+
+

Expected Results:

+
        -125         128
+       -1021        1024
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

precision#

+
+

Name#

+

precision(3) - [NUMERIC MODEL] Decimal precision of a real kind

+
+
+

Synopsis#

+
    result = precision(x)
+
+
+
     integer function precision(x)
+
+      TYPE(kind=**),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x shall be of type real or complex. It may be a scalar or an array.

  • +
  • the result is a default integer scalar.

  • +
+
+
+

Description#

+

precision(3) returns the decimal precision in the model of the type +of x.

+
+
+

Options#

+
    +
  • +
    x

    the type and kind of the argument are used to determine which number +model to query. The value of the argument is not unused; it may even +be undefined.

    +
    +
    +
  • +
+
+
+

Result#

+

The precision of values of the type and kind of x

+ +
+
+

Examples#

+

Sample program:

+
program demo_precision
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=sp)    :: x(2)
+complex(kind=dp) :: y
+
+   print *, precision(x), range(x)
+   print *, precision(y), range(y)
+
+end program demo_precision
+
+
+

Results:

+
  >           6          37
+  >          15         307
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

radix#

+
+

Name#

+

radix(3) - [NUMERIC MODEL] Base of a numeric model

+
+
+

Synopsis#

+
   result = radix(x)
+
+
+
    integer function radix(x)
+
+     TYPE(kind=**),intent(in) :: x(..)
+
+
+
+
+

Characteristics#

+
    +
  • x may be scalar or an array of any real or integer type.

  • +
  • the result is a default integer scalar.

  • +
+
+
+

Description#

+

radix(3) returns the base of the internal model representing the +numeric entity x.

+

In a positional numeral system, the radix or base is the number of +unique digits, including the digit zero, used to represent numbers.

+

This function helps to represent the internal computing model +generically, but will be 2 (representing a binary machine) for any +common platform for all the numeric types.

+
+
+

Options#

+
    +
  • +
    x

    used to identify the type of number to query.

    +
    +
    +
  • +
+
+
+

Result#

+

The returned value indicates what base is internally used to represent +the type of numeric value x represents.

+
+
+

Examples#

+

Sample program:

+
program demo_radix
+implicit none
+   print *, "The radix for the default integer kind is", radix(0)
+   print *, "The radix for the default real kind is", radix(0.0)
+   print *, "The radix for the doubleprecision real kind is", radix(0.0d0)
+end program demo_radix
+
+
+

Results:

+
 >  The radix for the default integer kind is           2
+ >  The radix for the default real kind is           2
+ >  The radix for the doubleprecision real kind is           2
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

range#

+
+

Name#

+

range(3) - [NUMERIC MODEL] Decimal exponent range of a numeric kind

+
+
+

Synopsis#

+
    result = range(x)
+
+
+
      integer function range (x)
+
+       TYPE(kind=KIND),intent(in) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be of type integer, real, or complex. It may be a scalar or an array.

  • +
  • KIND is any kind supported by the type of x

  • +
  • the result is a default integer scalar

  • +
+
+
+

Description#

+

range(3) returns the decimal exponent range in the model of the +type of x.

+

Since x is only used to determine the type and kind being +interrogated, the value need not be defined.

+
+
+

Options#

+
    +
  • +
    x

    the value whose type and kind are used for the query

    +
    +
    +
  • +
+
+
+

Result#

+
+
Case (i)

For an integer argument, the result has the value

+
+
+
    int (log10 (huge(x)))
+
+
+
+
Case (ii)

For a real argument, the result has the value

+
+
+
     int(min (log10 (huge(x)), -log10(tiny(x) )))
+
+
+
+
Case (iii)

For a complex argument, the result has the value

+
+
+
    range(real(x))
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_range
+use,intrinsic :: iso_fortran_env, only : dp=>real64,sp=>real32
+implicit none
+real(kind=sp)    :: x(2)
+complex(kind=dp) :: y
+   print *, precision(x), range(x)
+   print *, precision(y), range(y)
+end program demo_range
+
+
+

Results:

+
 >            6          37
+ >           15         307
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3), +tiny(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

tiny#

+
+

Name#

+

tiny(3) - [NUMERIC MODEL] Smallest positive number of a real kind

+
+
+

Synopsis#

+
    result = tiny(x)
+
+
+
     real(kind=KIND) function tiny(x)
+
+      real(kind=KIND) :: x
+
+
+
+
+

Characteristics#

+
    +
  • x may be any real scalar or array

  • +
  • the result has the same type and kind as x

  • +
+
+
+

Description#

+

tiny(3) returns the smallest positive (non zero) number of the +type and kind of x.

+

For real x

+
   result = 2.0**(minexponent(x)-1)
+
+
+
+
+

Options#

+
    +
  • +
    x

    The value whose kind is used to determine the model type to query

    +
    +
    +
  • +
+
+
+

Result#

+

The smallest positive value for the real type of the specified kind.

+
+
+

Examples#

+

Sample program:

+
program demo_tiny
+implicit none
+   print *, 'default real is from', tiny(0.0), 'to',huge(0.0)
+   print *, 'doubleprecision is from ', tiny(0.0d0), 'to',huge(0.0d0)
+end program demo_tiny
+
+
+

Results:

+
 default real is from 1.17549435E-38 to 3.40282347E+38
+ doubleprecision is from 2.2250738585072014E-308 to
+ 1.7976931348623157E+308
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

digits(3), +epsilon(3), +exponent(3), +fraction(3), +huge(3), +maxexponent(3), +minexponent(3), +nearest(3), +precision(3), +radix(3), +range(3), +rrspacing(3), +scale(3), +set_exponent(3), +spacing(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/numeric/index.html b/learn/intrinsics/numeric/index.html new file mode 100644 index 000000000000..b36287ce2316 --- /dev/null +++ b/learn/intrinsics/numeric/index.html @@ -0,0 +1,4617 @@ + + + + + + + + + Manipulation and properties of numeric values — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Manipulation and properties of numeric values#

+
+

abs#

+
+

Name#

+

abs(3) - [NUMERIC] Absolute value

+
+
+

Synopsis#

+
    result = abs(a)
+
+
+
     elemental TYPE(kind=KIND) function abs(a)
+
+      TYPE(kind=KIND),intent(in) :: a
+
+
+
+
+

Characteristics#

+
    +
  • a may be any real, integer, or complex value.

  • +
  • If a is complex the returned value will be a real with the +same kind as a.

    +

    Otherwise the returned type and kind is the same as for a.

    +
  • +
+
+
+

Description#

+

abs(3) computes the absolute value of numeric argument a.

+

In mathematics, the absolute value or modulus of a real number x, +denoted |x|, is the magnitude of x without regard to its sign.

+

The absolute value of a number may be thought of as its distance from +zero. So for a complex value the absolute value is a real number +with magnitude sqrt(x%re**2,x%im**2), as if the real component +is the x value and the imaginary value is the y value for the point +<x,y>.

+
+
+

Options#

+
    +
  • +
    a

    The value to compute the absolute value of.

    +
    +
    +
  • +
+
+
+

Result#

+

If a is of type integer or real, the value of the result +is the absolute value |a| and of the same type and kind as the +input argument.

+

If a is complex with value (x, y), the result is a real +equal to a processor-dependent approximation to

+
        sqrt(x**2 + y**2)
+
+
+

computed without undue overflow or underflow (that means the +computation of the result can overflow the allowed magnitude of the +real value returned, and that very small values can produce underflows +if they are squared while calculating the returned value, for example).

+

That is, if you think of non-complex values as being complex values +on the x-axis and complex values as being x-y points <x%re,x%im> +the result of abs(3) is the (positive) magnitude of the distance +of the value from the origin.

+
+
+

Examples#

+

Sample program:

+
program demo_abs
+implicit none
+integer,parameter :: dp=kind(0.0d0)
+
+integer           :: i = -1
+real              :: x = -1.0
+complex           :: z = (-3.0,-4.0)
+doubleprecision   :: rr = -45.78_dp
+
+character(len=*),parameter :: &
+   ! some formats
+   frmt  =  '(1x,a15,1x," In: ",g0,            T51," Out: ",g0)', &
+   frmtc = '(1x,a15,1x," In: (",g0,",",g0,")",T51," Out: ",g0)',  &
+   g     = '(*(g0,1x))'
+
+  ! basic usage
+    ! any integer, real, or complex type
+    write(*, frmt)  'integer         ',  i, abs(i)
+    write(*, frmt)  'real            ',  x, abs(x)
+    write(*, frmt)  'doubleprecision ', rr, abs(rr)
+    write(*, frmtc) 'complex         ',  z, abs(z)
+
+  ! You can take the absolute value of any value whose positive value
+  ! is representable with the same type and kind.
+    write(*, *) 'abs range test : ', abs(huge(0)), abs(-huge(0))
+    write(*, *) 'abs range test : ', abs(huge(0.0)), abs(-huge(0.0))
+    write(*, *) 'abs range test : ', abs(tiny(0.0)), abs(-tiny(0.0))
+    ! A dusty corner is that abs(-huge(0)-1) of an integer would be
+    ! a representable negative value on most machines but result in a
+    ! positive value out of range.
+
+  ! elemental
+    write(*, g) ' abs is elemental:', abs([20,  0,  -1,  -3,  100])
+
+  ! COMPLEX input produces REAL output
+    write(*, g)' complex input produces real output', &
+    & abs(cmplx(30.0_dp,40.0_dp,kind=dp))
+    ! dusty corner: "kind=dp" is required or the value returned by
+    ! CMPLX() is a default real instead of double precision
+
+  ! the returned value for complex input can be thought of as the
+  ! distance from the origin <0,0>
+    write(*, g) ' distance of (', z, ') from zero is', abs( z )
+    write(*, g) ' so beware of overflow with complex values'
+    !write(*, g) abs(cmplx( huge(0.0), huge(0.0) ))
+    write(*, g) ' because the biggest default real is',huge(0.0)
+
+end program demo_abs
+
+
+

Results:

+
    integer          In: -1                     Out: 1
+    real             In: -1.000000              Out: 1.000000
+    doubleprecision  In: -45.78000000000000     Out: 45.78000000000000
+    complex          In: (-3.000000,-4.000000)  Out: 5.000000
+    abs range test :   2147483647  2147483647
+    abs range test :   3.4028235E+38  3.4028235E+38
+    abs range test :   1.1754944E-38  1.1754944E-38
+    abs is elemental: 20 0 1 3 100
+    complex input produces real output 50.00000000000000
+    distance of ( -3.000000 -4.000000 ) from zero is 5.000000
+    so beware of overflow with complex values
+    Inf
+    because the biggest default real is .3402823E+39
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

sign(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

aint#

+
+

Name#

+

aint(3) - [NUMERIC] Truncate toward zero to a whole number

+
+
+

Synopsis#

+
    result = aint(x [,kind])
+
+
+
     elemental real(kind=KIND) function iaint(x,KIND)
+
+      real(kind=**),intent(in)   :: x
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • the result is a real of the default kind unless kind is specified.

  • +
  • kind is an integer initialization expression indicating the +kind parameter of the result.

  • +
+
+
+

Description#

+

aint(3) truncates its argument toward zero to a whole number.

+
+
+

Options#

+
    +
  • +
    x

    the real value to truncate.

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The sign is the same as the sign of x unless the magnitude of x +is less than one, in which case zero is returned.

+

Otherwise aint(3) returns the largest whole number that does not +exceed the magnitude of x with the same sign as the input.

+

That is, it truncates the value towards zero.

+
+
+

Examples#

+

Sample program:

+
program demo_aint
+use, intrinsic :: iso_fortran_env, only : sp=>real32, dp=>real64
+implicit none
+real(kind=dp) :: x8
+   print *,'basics:'
+   print *,' just chops off the fractional part'
+   print *,  aint(-2.999), aint(-2.1111)
+   print *,' if |x| < 1 a positive zero is returned'
+   print *,  aint(-0.999), aint( 0.9999)
+   print *,' input may be of any real kind'
+   x8 = 4.3210_dp
+   print *, aint(-x8), aint(x8)
+   print *,'elemental:'
+   print *,aint([ &
+    &  -2.7,  -2.5, -2.2, -2.0, -1.5, -1.0, -0.5, &
+    &  0.0,   &
+    &  +0.5,  +1.0, +1.5, +2.0, +2.2, +2.5, +2.7  ])
+end program demo_aint
+
+
+

Results:

+
 basics:
+  just chops off the fractional part
+  -2.000000      -2.000000
+  if |x| < 1 a positive zero is returned
+  0.0000000E+00  0.0000000E+00
+  input may be of any real kind
+  -4.00000000000000        4.00000000000000
+ elemental:
+  -2.000000      -2.000000      -2.000000      -2.000000      -1.000000
+  -1.000000      0.0000000E+00  0.0000000E+00  0.0000000E+00   1.000000
+   1.000000       2.000000       2.000000       2.000000       2.000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

anint(3), +int(3), +nint(3), +selected_int_kind(3), +ceiling(3), +floor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

anint#

+
+

Name#

+

anint(3) - [NUMERIC] Real nearest whole number

+
+
+

Synopsis#

+
    result = anint(a [,kind])
+
+
+
     elemental real(kind=KIND) function anint(x,KIND)
+
+      real(kind=**),intent(in)   :: x
+      integer,intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a is type real of any kind

  • +
  • KIND is a scalar integer constant expression.

  • +
  • the result is type real. The kind of the result is the same as x +unless specified by kind.

  • +
+
+
+

Description#

+

anint(3) rounds its argument to the nearest whole number.

+

Unlike nint(3) which returns an integer the full range or real +values can be returned (integer types typically have a smaller range +of values than real types).

+
+
+

Options#

+
    +
  • +
    a

    the value to round

    +
    +
    +
  • +
  • +
    kind

    specifies the kind of the result. The default is the kind of a.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is the real whole number nearest a.

+

If a is greater than zero, anint(a)(3) returns aint(a + 0.5).

+

If a is less than or equal to zero then it returns aint(a - 0.5), +except aint specifies that for |a| < 1 the result is zero (0).

+

It is processor-dependent whether anint(a) returns negative zero when +-0.5 < a <= -0.0. Compiler switches are often available which enable +or disable support of negative zero.

+
+
+

Examples#

+

Sample program:

+
program demo_anint
+use, intrinsic :: iso_fortran_env, only : real32, real64, real128
+implicit none
+real,allocatable :: arr(:)
+
+  ! basics
+   print *, 'ANINT (2.783) has the value 3.0 =>', anint(2.783)
+   print *, 'ANINT (-2.783) has the value -3.0 =>', anint(-2.783)
+
+   print *, 'by default the kind of the output is the kind of the input'
+   print *, anint(1234567890.1234567890e0)
+   print *, anint(1234567890.1234567890d0)
+
+   print *, 'sometimes specifying the result kind is useful when passing'
+   print *, 'results as an argument, for example.'
+   print *, 'do you know why the results are different?'
+   print *, anint(1234567890.1234567890,kind=real64)
+   print *, anint(1234567890.1234567890d0,kind=real64)
+
+  ! elemental
+   print *, 'numbers on a cusp are always the most troublesome'
+   print *, anint([ -2.7, -2.5, -2.2, -2.0, -1.5, -1.0, -0.5, 0.0 ])
+
+   print *, 'negative zero is processor dependent'
+   arr=[ 0.0, 0.1, 0.5, 1.0, 1.5, 2.0, 2.2, 2.5, 2.7 ]
+   print *, anint(arr)
+   arr=[ -0.0, -0.1, -0.5, -1.0, -1.5, -2.0, -2.2, -2.5, -2.7 ]
+   print *, anint(arr)
+
+end program demo_anint
+
+
+

Results:

+
 >  ANINT (2.783) has the value 3.0 =>   3.000000
+ >  ANINT (-2.783) has the value -3.0 =>  -3.000000
+ >  by default the kind of the output is the kind of the input
+ >   1.2345679E+09
+ >    1234567890.00000
+ >  sometimes specifying the result kind is useful when passing
+ >  results as an argument, for example.
+ >  do you know why the results are different?
+ >    1234567936.00000
+ >    1234567890.00000
+ >  numbers on a cusp are always the most troublesome
+ >   -3.000000      -3.000000      -2.000000      -2.000000      -2.000000
+ >   -1.000000      -1.000000      0.0000000E+00
+ >  negative zero is processor dependent
+ >   0.0000000E+00  0.0000000E+00   1.000000       1.000000       2.000000
+ >    2.000000       2.000000       3.000000       3.000000
+ >   0.0000000E+00  0.0000000E+00  -1.000000      -1.000000      -2.000000
+ >   -2.000000      -2.000000      -3.000000      -3.000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

aint(3), +int(3), +nint(3), +selected_int_kind(3), +ceiling(3), +floor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

ceiling#

+
+

Name#

+

ceiling(3) - [NUMERIC] Integer ceiling function

+
+
+

Synopsis#

+
    result = ceiling(a [,kind])
+
+
+
     elemental integer(KIND) function ceiling(a,KIND)
+
+      real(kind=**),intent(in)  :: a
+      integer,intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • ** a is of type real

  • +
  • KIND shall be a scalar integer constant expression. +It specifies the kind of the result if present.

  • +
  • the result is integer. It is default kind if KIND is not +specified

  • +
+
+
+

Description#

+

ceiling(3) returns the least integer greater than or equal to a.

+

On the number line -n <– 0 -> +n the value returned is always at or +to the right of the input value.

+
+
+

Options#

+
    +
  • +
    a

    A real value to produce a ceiling for.

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The result will be the integer value equal to a or the least +integer greater than a if the input value is not equal to a +whole number.

+

If a is equal to a whole number, the returned value is int(a).

+

The result is undefined if it cannot be represented in the specified +integer type.

+
+
+

Examples#

+

Sample program:

+
program demo_ceiling
+implicit none
+! just a convenient format for a list of integers
+character(len=*),parameter :: ints='(*("   > ",5(i0:,",",1x),/))'
+real :: x
+real :: y
+  ! basic usage
+   x = 63.29
+   y = -63.59
+   print ints, ceiling(x)
+   print ints, ceiling(y)
+   ! note the result was the next integer larger to the right
+
+  ! real values equal to whole numbers
+   x = 63.0
+   y = -63.0
+   print ints, ceiling(x)
+   print ints, ceiling(y)
+
+  ! elemental (so an array argument is allowed)
+   print ints , &
+   & ceiling([ &
+   &  -2.7,  -2.5, -2.2, -2.0, -1.5, &
+   &  -1.0,  -0.5,  0.0, +0.5, +1.0, &
+   &  +1.5,  +2.0, +2.2, +2.5, +2.7  ])
+
+end program demo_ceiling
+
+
+

Results:

+
   > 64
+   > -63
+   > 63
+   > -63
+   > -2, -2, -2, -2, -1,
+   > -1, 0, 0, 1, 1,
+   > 2, 2, 3, 3, 3
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

floor(3), +nint(3)

+

aint(3), +anint(3), +int(3), +selected_int_kind(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

conjg#

+
+

Name#

+

conjg(3) - [NUMERIC] Complex conjugate of a complex value

+
+
+

Synopsis#

+
    result = conjg(z)
+
+
+
     elemental complex(kind=KIND) function conjg(z)
+
+      complex(kind=**),intent(in) :: z
+
+
+
+
+

Characteristics#

+
    +
  • z is a complex value of any valid kind.

  • +
  • The returned value has the same complex type as the input.

  • +
+
+
+

Description#

+

conjg(3) returns the complex conjugate of the complex value z.

+

That is, If z is the complex value (x, y) then the result is +(x, -y).

+

In mathematics, the complex conjugate of a complex number is a value +whose real and imaginary part are equal parts are equal in magnitude to +each other but the y value has opposite sign.

+

For matrices of complex numbers, conjg(array) represents the +element-by-element conjugation of array; not the conjugate transpose +of the array .

+
+
+

Options#

+
    +
  • +
    z

    The value to create the conjugate of.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns a value equal to the input value except the sign of +the imaginary component is the opposite of the input value.

+

That is, if z has the value (x,y), the result has the value +(x, -y).

+
+
+

Examples#

+

Sample program:

+
program demo_conjg
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+& real32, real64, real128
+implicit none
+complex :: z = (2.0, 3.0)
+complex(kind=real64) :: dz = (   &
+   &  1.2345678901234567_real64, -1.2345678901234567_real64)
+complex :: arr(3,3)
+integer :: i
+   ! basics
+    ! notice the sine of the imaginary component changes
+    print *, z, conjg(z)
+
+    ! any complex kind is supported. z is of default kind but
+    ! dz is kind=real64.
+    print *, dz
+    dz = conjg(dz)
+    print *, dz
+    print *
+
+    ! the function is elemental so it can take arrays
+    arr(1,:)=[(-1.0, 2.0),( 3.0, 4.0),( 5.0,-6.0)]
+    arr(2,:)=[( 7.0,-8.0),( 8.0, 9.0),( 9.0, 9.0)]
+    arr(3,:)=[( 1.0, 9.0),( 2.0, 0.0),(-3.0,-7.0)]
+
+    write(*,*)'original'
+    write(*,'(3("(",g8.2,",",g8.2,")",1x))')(arr(i,:),i=1,3)
+    arr = conjg(arr)
+    write(*,*)'conjugate'
+    write(*,'(3("(",g8.2,",",g8.2,")",1x))')(arr(i,:),i=1,3)
+
+end program demo_conjg
+
+
+

Results:

+
 >  (2.000000,3.000000) (2.000000,-3.000000)
+ >
+ >  (1.23456789012346,-1.23456789012346)
+ >  (1.23456789012346,1.23456789012346)
+ >
+ >  original
+ > (-1.0    , 2.0    ) ( 3.0    , 4.0    ) ( 5.0    ,-6.0    )
+ > ( 7.0    ,-8.0    ) ( 8.0    , 9.0    ) ( 9.0    , 9.0    )
+ > ( 1.0    , 9.0    ) ( 2.0    , 0.0    ) (-3.0    ,-7.0    )
+ >
+ >  conjugate
+ > (-1.0    ,-2.0    ) ( 3.0    ,-4.0    ) ( 5.0    , 6.0    )
+ > ( 7.0    , 8.0    ) ( 8.0    ,-9.0    ) ( 9.0    ,-9.0    )
+ > ( 1.0    ,-9.0    ) ( 2.0    , 0.0    ) (-3.0    , 7.0    )
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+
    +
  • aimag(3) - Imaginary part of complex number

  • +
  • cmplx(3) - Complex conversion function

  • +
  • real(3) - Convert to real type

  • +
+

Fortran has strong support for complex values, including many intrinsics +that take or produce complex values in addition to algebraic and +logical expressions:

+

abs(3), +acosh(3), +acos(3), +asinh(3), +asin(3), +atan2(3), +atanh(3), +atan(3), +cosh(3), +cos(3), +co_sum(3), +dble(3), +dot_product(3), +exp(3), +int(3), +is_contiguous(3), +kind(3), +log(3), +matmul(3), +precision(3), +product(3), +range(3), +rank(3), +sinh(3), +sin(3), +sqrt(3), +storage_size(3), +sum(3), +tanh(3), +tan(3), +unpack(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

dim#

+
+

Name#

+

dim(3) - [NUMERIC] Positive difference of X - Y

+
+
+

Synopsis#

+
    result = dim(x, y)
+
+
+
     elemental TYPE(kind=KIND) function dim(x, y )
+
+      TYPE(kind=KIND),intent(in) :: x, y
+
+
+
+
+

Characteristics#

+
    +
  • x and y may be any real or integer but of the same type +and kind

  • +
  • the result is of the same type and kind as the arguments

  • +
+
+
+

Description#

+

dim(3) returns the maximum of x - y and zero. +That is, it returns the difference x - y if the result is positive; +otherwise it returns zero. It is equivalent to

+
  max(0,x-y)
+
+
+
+
+

Options#

+
    +
  • +
    x

    the subtrahend, ie. the number being subtracted from.

    +
    +
    +
  • +
  • +
    y

    the minuend; ie. the number being subtracted

    +
    +
    +
  • +
+
+
+

Result#

+

Returns the difference x - y or zero, whichever is larger.

+
+
+

Examples#

+

Sample program:

+
program demo_dim
+use, intrinsic :: iso_fortran_env, only : real64
+implicit none
+integer           :: i
+real(kind=real64) :: x
+
+   ! basic usage
+    i = dim(4, 15)
+    x = dim(4.321_real64, 1.111_real64)
+    print *, i
+    print *, x
+
+   ! elemental
+    print *, dim([1,2,3],2)
+    print *, dim([1,2,3],[3,2,1])
+    print *, dim(-10,[0,-10,-20])
+
+end program demo_dim
+
+
+

Results:

+
 >            0
+ >    3.21000000000000
+ >            0           0           1
+ >            0           0           2
+ >            0           0          10
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

dprod#

+
+

Name#

+

dprod(3) - [NUMERIC] Double precision real product

+
+
+

Synopsis#

+
    result = dprod(x,y)
+
+
+
     elemental function dprod(x,y)
+
+      real,intent(in) :: x
+      real,intent(in) :: y
+      doubleprecision :: dprod
+
+
+
+
+

Characteristics#

+
    +
  • x is a default real.

  • +
  • y is a default real.

  • +
  • the result is a doubleprecision real.

  • +
+

The setting of compiler options specifying the size of a default real +can affect this function.

+
+
+

Description#

+

dprod(3) produces a doubleprecision product of default real +values x and y.

+

That is, it is expected to convert the arguments to double precision +before multiplying, which a simple expression x*y would not be +required to do. This can be significant in specialized computations +requiring high precision.

+

The result has a value equal to a processor-dependent approximation +to the product of x and y. Note it is recommended in the +standard that the processor compute the product in double precision, +rather than in single precision then converted to double precision; +but is only a recommendation.

+
+
+

Options#

+
    +
  • +
    x

    the multiplier

    +
    +
    +
  • +
  • +
    y

    the multiplicand

    +
    +
    +
  • +
+
+
+

Result#

+

The returned value of the product should have the same value as +dble(x)*dble(y).

+
+
+

Examples#

+

Sample program:

+
program demo_dprod
+implicit none
+integer,parameter :: dp=kind(0.0d0)
+real :: x = 5.2
+real :: y = 2.3
+doubleprecision :: xx
+real(kind=dp)   :: dd
+
+   print *,'algebraically 5.2 x 2.3 is exactly 11.96'
+   print *,'as floating point values results may differ slightly:'
+   ! basic usage
+   dd = dprod(x,y)
+   print *, 'compare dprod(xy)=',dd, &
+   & 'to x*y=',x*y, &
+   & 'to dble(x)*dble(y)=',dble(x)*dble(y)
+
+   print *,'test if an expected result is produced'
+   xx=-6.0d0
+   write(*,*)DPROD(-3.0, 2.0),xx
+   write(*,*)merge('PASSED','FAILED',DPROD(-3.0, 2.0) == xx)
+
+   print *,'elemental'
+   print *, dprod( [2.3,3.4,4.5], 10.0 )
+   print *, dprod( [2.3,3.4,4.5], [9.8,7.6,5.4] )
+
+end program demo_dprod
+
+
+

Results: +(this can vary between programming environments):

+
 >  algebraically 5.2 x 2.3 is exactly 11.96
+ >  as floating point values results may differ slightly:
+ >  compare dprod(xy)=   11.9599993133545      to x*y=   11.96000
+ >  to dble(x)*dble(y)=   11.9599993133545
+ >  test if an expected result is produced
+ >   -6.00000000000000       -6.00000000000000
+ >  PASSED
+ >  elemental
+ >    22.9999995231628     34.0000009536743     45.0000000000000
+ >    22.5399999713898     25.8400004005432     24.3000004291534
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

dble(3) +real(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

floor#

+
+

Name#

+

floor(3) - [NUMERIC] Function to return largest integral value +not greater than argument

+
+
+

Synopsis#

+
    result = floor(a [,kind])
+
+
+
     elemental integer(kind=KIND) function floor( a ,kind )
+
+      real(kind=**),intent(in) :: a
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • a is a real of any kind

  • +
  • KIND is any valid value for type integer.

  • +
  • the result is an integer of the specified or default kind

  • +
+
+
+

Description#

+

floor(3) returns the greatest integer less than or equal to a.

+

In other words, it picks the whole number at or to the left of the value on +the number line.

+

This means care has to be taken that the magnitude of the real value a +does not exceed the range of the output value, as the range of values supported +by real values is typically larger than the range for integers.

+
+
+

Options#

+
    +
  • +
    a

    The value to operate on. Valid values are restricted by the size of +the returned integer kind to the range -huge(int(a,kind=KIND))-1 +to huge(int(a),kind=KIND).

    +
    +
    +
  • +
  • +
    kind

    A scalar integer constant initialization expression +indicating the kind parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer(kind) if kind is present and of +default-kind integer otherwise.

+

The result is undefined if it cannot be represented in the specified +integer type.

+

If in range for the kind of the result the result is the whole number +at or to the left of the input value on the number line.

+

If a is positive the result is the value with the fractional part +removed.

+

If a is negative, it is the whole number at or to the left of the +input value.

+
+
+

Examples#

+

Sample program:

+
program demo_floor
+implicit none
+real :: x = 63.29
+real :: y = -63.59
+    print *, x, floor(x)
+    print *, y, floor(y)
+   ! elemental
+   print *,floor([ &
+   &  -2.7,  -2.5, -2.2, -2.0, -1.5, -1.0, -0.5, &
+   &  0.0,   &
+   &  +0.5,  +1.0, +1.5, +2.0, +2.2, +2.5, +2.7  ])
+
+   ! note even a small deviation from the whole number changes the result
+   print *,      [2.0,2.0-epsilon(0.0),2.0-2*epsilon(0.0)]
+   print *,floor([2.0,2.0-epsilon(0.0),2.0-2*epsilon(0.0)])
+
+   ! A=Nan, Infinity or  <huge(0_KIND)-1 < A > huge(0_KIND) is undefined
+end program demo_floor
+
+
+

Results:

+
 >     63.29000             63
+ >    -63.59000            -64
+ >            -3         -3         -3         -2         -2         -1
+ >            -1          0          0          1          1          2
+ >             2          2          2
+ >     2.000000      2.000000      2.000000
+ >             2          1          1
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

ceiling(3), +nint(3), +aint(3), +anint(3), +int(3), +selected_int_kind(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+ +
+
+
+

max#

+
+

Name#

+

max(3) - [NUMERIC] Maximum value of an argument list

+
+
+

Synopsis#

+
    result = max(a1, a2, a3, ...)
+
+
+
     elemental TYPE(kind=KIND) function max(a1, a2, a3, ... )
+
+      TYPE(kind=KIND,intent(in),optional :: a1
+      TYPE(kind=KIND,intent(in),optional :: a2
+      TYPE(kind=KIND,intent(in),optional :: a3
+                :
+                :
+                :
+
+
+
+
+

Characteristics#

+
    +
  • a3, a3, a4, … must be of the same type and kind as a1

  • +
  • the arguments may (all) be integer, real or character

  • +
  • there must be at least two arguments

  • +
  • the length of a character result is the length of the longest argument

  • +
  • the type and kind of the result is the same as those of the arguments

  • +
+
+
+

Description#

+

max(3) returns the argument with the largest (most positive) value.

+

For arguments of character type, the result is as if the arguments had +been successively compared with the intrinsic operational operators, +taking into account the collating sequence of the character kind.

+

If the selected character argument is shorter than the longest +argument, the result is as all values were extended with blanks on +the right to the length of the longest argument.

+

It is unusual for a Fortran intrinsic to take an arbitrary number of +options, and in addition max(3) is elemental, meaning any number +of arguments may be arrays as long as they are of the same shape. +The examples have an extended description clarifying the resulting +behavior for those not familiar with calling a “scalar” function +elementally with arrays.

+

See maxval(3) for simply getting the max value of an array.

+
+
+

Options#

+
    +
  • +
    a1

    The first argument determines the type and kind of the returned +value, and of any remaining arguments as well as being a member of +the set of values to find the maximum (most positive) value of.

    +
    +
    +
  • +
  • +
    a2,a3,…

    the remaining arguments of which to find the maximum value(s) of.

    +
    +

    There must be at least two arguments to max(3).

    +
    +
    +
  • +
+
+
+

Result#

+

The return value corresponds to an array of the same shape of any +array argument, or a scalar if all arguments are scalar.

+

The returned value when any argument is an array will be an array of +the same shape where each element is the maximum value occurring at +that location, treating all the scalar values as arrays of that same +shape with all elements set to the scalar value.

+
+
+

Examples#

+

Sample program

+
program demo_max
+implicit none
+real :: arr1(4)= [10.0,11.0,30.0,-100.0]
+real :: arr2(5)= [20.0,21.0,32.0,-200.0,2200.0]
+integer :: box(3,4)= reshape([-6,-5,-4,-3,-2,-1,1,2,3,4,5,6],shape(box))
+
+  ! basic usage
+   ! this is simple enough when all arguments are scalar
+
+   ! the most positive value is returned, not the one with the
+   ! largest magnitude
+   write(*,*)'scalars:',max(10.0,11.0,30.0,-100.0)
+   write(*,*)'scalars:',max(-22222.0,-0.0001)
+
+   ! strings do not need to be of the same length
+   write(*,*)'characters:',max('the','words','order')
+
+   ! leading spaces are significant; everyone is padded on the right
+   ! to the length of the longest argument
+   write(*,*)'characters:',max('c','bb','a')
+   write(*,*)'characters:',max(' c','b','a')
+
+  ! elemental
+   ! there must be at least two arguments, so even if A1 is an array
+   ! max(A1) is not valid. See MAXVAL(3) and/or MAXLOC(3) instead.
+
+   ! strings in a single array do need to be of the same length
+   ! but the different objects can still be of different lengths.
+   write(*,"(*('""',a,'""':,1x))")MAX(['A','Z'],['BB','Y '])
+   ! note the result is now an array with the max of every element
+   ! position, as can be illustrated numerically as well:
+   write(*,'(a,*(i3,1x))')'box=   ',box
+   write(*,'(a,*(i3,1x))')'box**2=',sign(1,box)*box**2
+   write(*,'(a,*(i3,1x))')'max    ',max(box,sign(1,box)*box**2)
+
+   ! Remember if any argument is an array by the definition of an
+   ! elemental function all the array arguments must be the same shape.
+
+   ! to find the single largest value of arrays you could use something
+   ! like MAXVAL([arr1, arr2]) or probably better (no large temp array),
+   ! max(maxval(arr1),maxval(arr2)) instead
+
+   ! so this returns an array of the same shape as any input array
+   ! where each result is the maximum that occurs at that position.
+   write(*,*)max(arr1,arr2(1:4))
+   ! this returns an array just like arr1 except all values less than
+   ! zero are set to zero:
+   write(*,*)max(box,0)
+   ! When mixing arrays and scalars you can think of the scalars
+   ! as being a copy of one of the arrays with all values set to
+   ! the scalar value.
+
+end program demo_max
+
+
+

Results:

+
    scalars:   30.00000
+    scalars: -9.9999997E-05
+    characters:words
+    characters:c
+    characters:b
+   "BB" "Z "
+   box=    -6  -5  -4  -3  -2  -1   1   2   3   4   5   6
+   box**2=-36 -25 -16  -9  -4  -1   1   4   9  16  25  36
+   max     -6  -5  -4  -3  -2  -1   1   4   9  16  25  36
+   20.00000  21.00000  32.00000  -100.0000
+   0  0  0  0  0  0
+   1  2  3  4  5  6
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

maxloc(3), +minloc(3), +maxval(3), +minval(3), +min(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

min#

+
+

Name#

+

min(3) - [NUMERIC] Minimum value of an argument list

+
+
+

Synopsis#

+
    result = min(a1, a2, a3, ... )
+
+
+
     elemental TYPE(kind=KIND) function min(a1, a2, a3, ... )
+
+      TYPE(kind=KIND,intent(in)   :: a1
+      TYPE(kind=KIND,intent(in)   :: a2
+      TYPE(kind=KIND,intent(in)   :: a3
+                :
+                :
+                :
+
+
+
+
+

Characteristics#

+
    +
  • TYPE may be integer, real or character.

  • +
+
+
+

Description#

+

min(3) returns the argument with the smallest (most negative) value.

+

See max(3) for an extended example of the behavior of min(3) as +and max(3).

+
+
+

Options#

+
    +
  • +
    a1

    the first element of the set of values to determine the minimum of.

    +
    +
    +
  • +
  • +
    a2, a3, …

    An expression of the same type and kind as a1 completing the +set of values to find the minimum of.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value corresponds to the minimum value among the arguments, +and has the same type and kind as the first argument.

+
+
+

Examples#

+

Sample program

+
program demo_min
+implicit none
+    write(*,*)min(10.0,11.0,30.0,-100.0)
+end program demo_min
+
+
+

Results:

+
      -100.0000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

maxloc(3), +minloc(3), +minval(3), +max(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

mod#

+
+

Name#

+

mod(3) - [NUMERIC] Remainder function

+
+
+

Synopsis#

+
    result = mod(a, p)
+
+
+
     elemental type(TYPE(kind=KIND)) function mod(a,p)
+
+      type(TYPE(kind=KIND),intent(in) :: a
+      type(TYPE(kind=KIND),intent(in) :: p
+
+
+
+
+

Characteristics#

+
    +
  • The result and arguments are all of the same type and kind.

  • +
  • The type may be any kind of real or integer.

  • +
+
+
+

Description#

+

mod(3) computes the remainder of the division of a by p.

+

In mathematics, the remainder is the amount “left over” after +performing some computation. In arithmetic, the remainder is the +integer “left over” after dividing one integer by another to produce +an integer quotient (integer division). In algebra of polynomials, the +remainder is the polynomial “left over” after dividing one polynomial +by another. The modulo operation is the operation that produces such +a remainder when given a dividend and divisor.

+
    +
  • (remainder). (2022, October 10). In Wikipedia. +https://en.wikipedia.org/wiki/Remainder

  • +
+
+
+

Options#

+
    +
  • +
    a

    The dividend

    +
    +
    +
  • +
  • +
    p

    the divisor (not equal to zero).

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is the result of a - (int(a/p) * p).

+

As can be seen by the formula the sign of p is canceled out. +Therefore the returned value always has the sign of a.

+

Of course, the magnitude of the result will be less than the magnitude +of p, as the result has been reduced by all multiples of p.

+
+
+

Examples#

+

Sample program:

+
program demo_mod
+implicit none
+
+   ! basics
+    print *, mod( -17,  3 ), modulo( -17,  3 )
+    print *, mod(  17, -3 ), modulo(  17, -3 )
+    print *, mod(  17,  3 ), modulo(  17,  3 )
+    print *, mod( -17, -3 ), modulo( -17, -3 )
+
+    print *, mod(-17.5, 5.2), modulo(-17.5, 5.2)
+    print *, mod( 17.5,-5.2), modulo( 17.5,-5.2)
+    print *, mod( 17.5, 5.2), modulo( 17.5, 5.2)
+    print *, mod(-17.5,-5.2), modulo(-17.5,-5.2)
+
+  ! with a divisor of 1 the fractional part is returned
+    print *, mod(-17.5, 1.0), modulo(-17.5, 1.0)
+    print *, mod( 17.5,-1.0), modulo( 17.5,-1.0)
+    print *, mod( 17.5, 1.0), modulo( 17.5, 1.0)
+    print *, mod(-17.5,-1.0), modulo(-17.5,-1.0)
+
+end program demo_mod
+
+
+

Results:

+
             -2           1
+              2          -1
+              2           2
+             -2          -2
+     -1.900001       3.299999
+      1.900001      -3.299999
+      1.900001       1.900001
+     -1.900001      -1.900001
+    -0.5000000      0.5000000
+     0.5000000     -0.5000000
+     0.5000000      0.5000000
+    -0.5000000     -0.5000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+
    +
  • modulo(3) - Modulo function

  • +
  • aint(3) - truncate toward zero to a whole real number

  • +
  • int(3) - truncate toward zero to a whole integer number

  • +
  • anint(3) - real nearest whole number

  • +
  • nint(3) - integer nearest whole number

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

modulo#

+
+

Name#

+

modulo(3) - [NUMERIC] Modulo function

+
+
+

Synopsis#

+
    result = modulo(a, p)
+
+
+
     elemental TYPE(kind=KIND) function modulo(a,p)
+
+      TYPE(kind=KIND),intent(in) :: a
+      TYPE(kind=KIND),intent(in) :: p
+
+
+
+
+

Characteristics#

+
    +
  • a may be any kind of real or integer.

  • +
  • p is the same type and kind as a

  • +
  • The result and arguments are all of the same type and kind.

  • +
+
+
+

Description#

+

modulo(3) computes the a modulo p.

+
+
+

Options#

+
    +
  • +
    a

    the value to take the modulo of

    +
    +
    +
  • +
  • +
    p

    The value to reduce a by till the remainder is <= p. +It shall not be zero.

    +
    +
    +
  • +
+
+
+

Result#

+

The type and kind of the result are those of the arguments.

+
    +
  • If a and p are of type integer: modulo(a,p) has the value of +a - floor (real(a) / real(p)) * p.

  • +
  • If a and p are of type real: modulo(a,p) has the value of +a - floor (a / p) * p.

  • +
+

The returned value has the same sign as p and a magnitude less than the +magnitude of p.

+
+
+

Examples#

+

Sample program:

+
program demo_modulo
+implicit none
+     print *, modulo(17,3)        ! yields 2
+     print *, modulo(17.5,5.5)    ! yields 1.0
+
+     print *, modulo(-17,3)       ! yields 1
+     print *, modulo(-17.5,5.5)   ! yields 4.5
+
+     print *, modulo(17,-3)       ! yields -1
+     print *, modulo(17.5,-5.5)   ! yields -4.5
+end program demo_modulo
+
+
+

Results:

+
 >            2
+ >    1.000000
+ >            1
+ >    4.500000
+ >           -1
+ >   -4.500000
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

mod(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

sign#

+
+

Name#

+

sign(3) - [NUMERIC] Sign copying function

+
+
+

Synopsis#

+
    result = sign(a, b)
+
+
+
     elemental type(TYPE(kind=KIND))function sign(a, b)
+
+      type(TYPE(kind=KIND)),intent(in) :: a, b
+
+
+
+
+

Characteristics#

+
    +
  • a shall be of type integer or real.

  • +
  • b shall be of the same type as a.

  • +
  • the characteristics of the result are the same as a.

  • +
+
+
+

Description#

+

sign(3) returns a value with the magnitude of a but with the +sign of b.

+

For processors that distinguish between positive and negative zeros +sign() may be used to distinguish between real values 0.0 and +-0.0. SIGN (1.0, -0.0) will return -1.0 when a negative zero is +distinguishable.

+
+
+

Options#

+
    +
  • +
    a

    The value whose magnitude will be returned.

    +
    +
    +
  • +
  • +
    b

    The value whose sign will be returned.

    +
    +
    +
  • +
+
+
+

Result#

+

a value with the magnitude of a with the sign of b. That is,

+
    +
  • If b >= 0 then the result is abs(a)

  • +
  • else if b < 0 it is -abs(a).

  • +
  • if b is real and the processor distinguishes between -0.0 +and 0.0 then the +result is -abs(a)

  • +
+
+
+

Examples#

+

Sample program:

+
program demo_sign
+implicit none
+  ! basics
+   print *,  sign( -12,  1 )
+   print *,  sign( -12,  0 )
+   print *,  sign( -12, -1 )
+   print *,  sign(  12,  1 )
+   print *,  sign(  12,  0 )
+   print *,  sign(  12, -1 )
+
+   if(sign(1.0,-0.0)== -1.0)then
+      print *, 'this processor distinguishes +0 from -0'
+   else
+      print *, 'this processor does not distinguish +0 from -0'
+   endif
+
+   print *,  'elemental', sign( -12.0, [1.0, 0.0, -1.0] )
+
+end program demo_sign
+
+
+

Results:

+
             12
+             12
+            -12
+             12
+             12
+            -12
+    this processor does not distinguish +0 from -0
+    elemental   12.00000       12.00000      -12.00000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See also#

+

abs(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

cshift#

+
+

Name#

+

cshift(3) - [TRANSFORMATIONAL] Circular shift elements of an array

+
+
+

Synopsis#

+
   result = cshift(array, shift [,dim])
+
+
+
    type(TYPE, kind=KIND) function cshift(array, shift, dim )
+
+     type(TYPE,kind=KIND),intent(in) :: array(..)
+     integer(kind=**),intent(in)  :: shift
+     integer(kind=**),intent(in)  :: dim
+
+
+
+
+

Characteristics#

+
    +
  • array may be any type and rank

  • +
  • shift an integer scalar if array has rank one. +Otherwise, it shall be scalar or of rank n-1 and of shape [d1, d2, +…, dDIM-1, dDIM+1, …, dn] where [d1, d2, …, dn] is the shape +of array.

  • +
  • dim is an integer scalar with a value in the range 1 <= dim +<= n, where n is the rank of array. +If dim is absent, it is as if it were present with the value 1.

  • +
  • the result will automatically be of the same type, kind and shape as array.

  • +
+

NOTE: +:a kind designated as ** may be any supported kind for the type

+
+
+

Description#

+

cshift(3) performs a circular shift on elements +of array along the dimension of dim. If dim is omitted it is +taken to be 1. dim is a scalar of type integer in the range of +1 <= dim <= n, where “n” is the rank of array.

+

If the rank of +array is one, then all elements of array are shifted by shift +places. If rank is greater than one, then all complete rank one sections +of array along the given dimension are shifted. Elements shifted +out one end of each rank one section are shifted back in the other end.

+
+
+

Options#

+
    +
  • +
    array

    An array of any type which is to be shifted

    +
    +
    +
  • +
  • +
    shift

    the number of positions to circularly shift. A negative value produces +a right shift, a positive value produces a left shift.

    +
    +
    +
  • +
  • +
    dim

    the dimension along which to shift a multi-rank array. Defaults +to 1.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns an array of same type and rank as the array argument.

+

The rows of an array of rank two may all be shifted by the same amount +or by different amounts.

+
+
+
+

cshift#

+
+

Examples#

+

Sample program:

+
program demo_cshift
+implicit none
+integer, dimension(5)   :: i1,i2,i3
+integer, dimension(3,4) :: a, b
+   !basics
+    i1=[10,20,30,40,50]
+    print *,'start with:'
+    print '(1x,5i3)', i1
+    print *,'shift -2'
+    print '(1x,5i3)', cshift(i1,-2)
+    print *,'shift +2'
+    print '(1x,5i3)', cshift(i1,+2)
+
+    print *,'start with a matrix'
+    a = reshape( [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ], [ 3, 4 ])
+    print '(4i3)', a(1,:)
+    print '(4i3)', a(2,:)
+    print '(4i3)', a(3,:)
+    print *,'matrix shifted along rows, each by its own amount [-1,0,1]'
+    b = cshift(a, SHIFT=[1, 0, -1], DIM=2)
+    print *
+    print '(4i3)', b(1,:)
+    print '(4i3)', b(2,:)
+    print '(4i3)', b(3,:)
+end program demo_cshift
+
+
+

Results:

+
 >  start with:
+ >   10 20 30 40 50
+ >  shift -2
+ >   40 50 10 20 30
+ >  shift +2
+ >   30 40 50 10 20
+ >  start with a matrix
+ >   1  4  7 10
+ >   2  5  8 11
+ >   3  6  9 12
+ >  matrix shifted along rows, each by its own amount
+ >
+ >   4  7 10  1
+ >   2  5  8 11
+ >  12  3  6  9
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • eoshift(3) - End-off shift elements of an array

  • +
+ +
    +
  • sum(3) - sum the elements of an array

  • +
  • product(3) - Product of array elements

  • +
  • findloc(3) - Location of first element of ARRAY identified by MASK along dimension DIM having a value

  • +
  • maxloc(3) - Location of the maximum value within an array

  • +
+

fortran-lang intrinsic descriptions

+
+
+
+

dot_product#

+
+

Name#

+

dot_product(3) - [TRANSFORMATIONAL] Dot product of two vectors

+
+
+

Synopsis#

+
    result = dot_product(vector_a, vector_b)
+
+
+
     TYPE(kind=KIND) function dot_product(vector_a, vector_b)
+
+      TYPE(kind=KIND),intent(in) :: vector_a(:)
+      TYPE(kind=KIND),intent(in) :: vector_b(:)
+
+
+
+
+

Characteristics#

+
    +
  • vector_a, vector_b may be any numeric or logical type array +of rank one of the same size

  • +
  • the two vectors need not be of the same kind, but both must be logical +or numeric for any given call.

  • +
  • the result is the same type and kind of the vector that is the higher +type that the other vector is optionally promoted to if they differ.

  • +
+

The two vectors may be either numeric or logical and must be arrays +of rank one and of equal size.

+
+
+

Description#

+

dot_product(3) computes the dot product +multiplication of two vectors vector_a and vector_b.

+
+
+

Options#

+
    +
  • +
    vector_a

    A rank 1 vector of values

    +
    +
    +
  • +
  • +
    vector_b

    The type shall be numeric if vector_a is of numeric type +or logical if vectora is of type _logical. vector_b shall be a +rank-one array of the same size as vector_a.

    +
    +
    +
  • +
+
+
+

Result#

+

If the arguments are numeric, the return value is a scalar of numeric +type. If the arguments are logical, the +return value is .true. or .false..

+

If the vectors are integer or real, the result is

+
     sum(vector_a*vector_b)
+
+
+

If the vectors are complex, the result is

+
     sum(conjg(vector_a)*vector_b)**
+
+
+

If the vectors are logical, the result is

+
     any(vector_a .and. vector_b)
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_dot_prod
+implicit none
+    integer, dimension(3) :: a, b
+    a = [ 1, 2, 3 ]
+    b = [ 4, 5, 6 ]
+    print '(3i3)', a
+    print *
+    print '(3i3)', b
+    print *
+    print *, dot_product(a,b)
+end program demo_dot_prod
+
+
+

Results:

+
  >  1  2  3
+  >
+  >  4  5  6
+  >
+  >           32
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

sum(3), +conjg(3), +any(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

eoshift#

+
+

Name#

+

eoshift(3) - [TRANSFORMATIONAL] End-off shift of elements of an array

+
+
+

Synopsis#

+
  result = eoshift( array, shift [,boundary] [,dim] )
+
+
+
   type(TYPE(kind=KIND)) function eoshift(array,shift,boundary,dim)
+
+    type(TYPE(kind=KIND)),intent(in) :: array(..)
+    integer(kind=**),intent(in)      :: shift(..)
+    type(TYPE(kind=KIND)),intent(in) :: boundary(..)
+    integer(kind=**),intent(in)      :: dim
+
+
+
+
+

Characteristics#

+
    +
  • array an array of any type

  • +
  • shift is an integer of any kind. It may be a scalar. +If the rank of array is greater than one, and dim is +specified it is the same shape as array reduced by removing +dimension dim.

  • +
  • boundary May be a scalar of the same type and kind as array. +It must be a scalar when array has a rank of one. Otherwise, it +may be an array of the same shape as array reduced by dimension +dim. It may only be absent for certain types, as described below.

  • +
  • dim is an integer of any kind. It defaults to one.

  • +
  • the result has the same type, type parameters, and shape as array.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
  • The result is an array of same type, kind and rank as the array +argument.

  • +
+
+
+

Description#

+

eoshift(3) performs an end-off shift on elements of array +along the dimension of dim.

+

Elements shifted out one end of each rank one section are dropped.

+

If boundary is present then the corresponding value from +boundary is copied back in the other end, else default values +are used.

+
+
+

Options#

+
    +
  • +
    array

    array of any type whose elements are to be shifted. +If the rank of array is one, then all elements of array are +shifted by shift places. If rank is greater than one, then all +complete rank one sections of array along the given dimension +are shifted.

    +
    +
    +
  • +
  • +
    shift

    the number of elements to shift. A negative value shifts to the +right, a positive value to the left of the vector(s) being shifted.

    +
    +
    +
  • +
  • +
    boundary

    the value to use to fill in the elements vacated by the shift. +If boundary is not present then the following are copied in +depending on the type of array.

    +
    +
    +
  • +
+
    Array Type    | Boundary Value
+    -----------------------------------------------------
+    Numeric       | 0, 0.0, or (0.0, 0.0) of the type and kind of "array"
+    Logical       | .false.
+    Character(len)|  LEN blanks
+
+
+

These are the only types for which boundary may not be present. +For these types the kind is converted as neccessary to the kind of +array.

+
    +
  • +
    dim

    dim is in the range of

    +
    +
    +
  • +
+
    1 <= DIM <= n
+
+
+

where “n” is the rank of array. If dim is omitted it +is taken to be 1.

+
+
+

Result#

+

Returns an array of the same characteristics as the input with the +specified number of elements dropped off along the specified direction +indicated, backfilling the vacated elements with a value indicated by +the boundary value.

+
+
+

Examples#

+

Sample program:

+
program demo_eoshift
+implicit none
+integer, dimension(3,3) :: a
+integer :: i
+
+    a = reshape( [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 3, 3 ])
+    print '(3i3)', (a(i,:),i=1,3)
+
+    print *
+
+    ! shift it
+    a = eoshift(a, SHIFT=[1, 2, 1], BOUNDARY=-5, DIM=2)
+    print '(3i3)', (a(i,:),i=1,3)
+
+end program demo_eoshift
+
+
+

Results:

+
  >  1  4  7
+  >  2  5  8
+  >  3  6  9
+  >
+  >  4  7 -5
+  >  8 -5 -5
+  >  6  9 -5
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

dshiftr(3), +dshiftl(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

matmul#

+
+

Name#

+

matmul(3) - [TRANSFORMATIONAL] Numeric or logical matrix +multiplication

+
+
+

Synopsis#

+
    result = matmul(matrix_a,matrix_b)
+
+
+
     function matmul(matrix_a, matrix_b)
+
+      type(TYPE1(kind=**)       :: matrix_a(..)
+      type(TYPE2(kind=**)       :: matrix_b(..)
+      type(TYPE(kind=PROMOTED)) :: matmul(..)
+
+
+
+
+

Characteristics#

+
    +
  • matrix_a is a numeric (integer, real, or complex ) or +logical array of rank one two.

  • +
  • matrix_b is a numeric (integer, real, or complex ) or +logical array of rank one two.

  • +
  • At least one argument must be rank two.

  • +
  • the size of the first dimension of matrix_b must equal the size +of the last dimension of matrix_a.

  • +
  • the type of the result is the same as if an element of each argument +had been multiplied as a RHS expression (that is, if the arguments +are not of the same type the result follows the same rules of promotion +as a simple scalar multiplication of the two types would produce)

  • +
  • If one argument is logical, both must be logical. For logicals +the resulting type is as if the .and. operator has been used on +elements from the arrays.

  • +
  • The shape of the result depends on the shapes of the arguments +as described below.

  • +
+
+
+

Description#

+

matmul(3) performs a matrix multiplication on numeric or logical +arguments.

+
+
+

Options#

+
    +
  • +
    matrix_a

    A numeric or logical array with a rank of one or two.

    +
    +
    +
  • +
  • +
    matrix_b

    A numeric or logical array with a rank of one or two. The last +dimension of matrix_a and the first dimension of matrix_b +must be equal.

    +
    +
    +

    Note that matrix_a and matrix_b may be different numeric +types.

    +
  • +
+
+
+

Result#

+
+

Numeric Arguments#

+

If matrix_a and matrix_b are numeric the result is an +array containing the conventional matrix product of matrix_a +and matrix_b.

+

First, for the numeric expression C=matmul(A,B)

+
    +
  • Any vector A(n) is treated as a row vector A(1,n).

  • +
  • Any vector B(n) is treated as a column vector B(n,1).

  • +
+
+
Shape and Rank#
+

The shape of the result can then be determined as the number of rows +of the first matrix and the number of columns of the second; but if +any argument is of rank one (a vector) the result is also rank one. +Conversely when both arguments are of rank two, the result has a rank +of two. That is …

+
    +
  • If matrix_a has shape [n,m] and matrix_b has shape [m,k], +the result has shape [n,k].

  • +
  • If matrix_a has shape [m] and matrix_b has shape [m,k], +the result has shape [k].

  • +
  • If matrix_a has shape [n,m] and matrix_b has shape [m], +the result has shape [n].

  • +
+
+
+
Values#
+

Then element C(i,j) of the product is obtained by multiplying +term-by-term the entries of the ith row of A and the jth column +of B, and summing these products. In other words, C(i,j) +is the dot product of the ith row of A and the jth column of B.

+
+
+
+

Logical Arguments#

+
+
Values#
+

If matrix_a and matrix_b are of type logical, the array elements +of the result are instead:

+
  Value_of_Element (i,j) = &
+  ANY( (row_i_of_MATRIX_A) .AND. (column_j_of_MATRIX_B) )
+
+
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_matmul
+implicit none
+integer :: a(2,3), b(3,2), c(2), d(3), e(2,2), f(3), g(2), v1(4),v2(4)
+   a = reshape([1, 2, 3, 4, 5, 6], [2, 3])
+   b = reshape([10, 20, 30, 40, 50, 60], [3, 2])
+   c = [1, 2]
+   d = [1, 2, 3]
+   e = matmul(a, b)
+   f = matmul(c,a)
+   g = matmul(a,d)
+
+   call print_matrix_int('A is ',a)
+   call print_matrix_int('B is ',b)
+   call print_vector_int('C is ',c)
+   call print_vector_int('D is ',d)
+   call print_matrix_int('E is matmul(A,B)',e)
+   call print_vector_int('F is matmul(C,A)',f)
+   call print_vector_int('G is matmul(A,D)',g)
+
+   ! look at argument shapes when one is a vector
+   write(*,'(" > shape")')
+   ! at least one argument must be of rank two
+   ! so for two vectors at least one must be reshaped
+   v1=[11,22,33,44]
+   v2=[10,20,30,40]
+
+   ! these return a vector C(1:1)
+   ! treat A(1:n) as A(1:1,1:n)
+   call print_vector_int('Cd is a vector (not a scalar)',&
+   & matmul(reshape(v1,[1,size(v1)]),v2))
+   ! or treat B(1:m) as B(1:m,1:1)
+   call print_vector_int('cD is a vector too',&
+   & matmul(v1,reshape(v2,[size(v2),1])))
+
+   ! or treat A(1:n) as A(1:1,1:n) and B(1:m) as B(1:m,1:1)
+   ! but note this returns a matrix C(1:1,1:1) not a vector!
+   call print_matrix_int('CD is a matrix',matmul(&
+   & reshape(v1,[1,size(v1)]), &
+   & reshape(v2,[size(v2),1])))
+
+contains
+
+! CONVENIENCE ROUTINES TO PRINT IN ROW-COLUMN ORDER
+subroutine print_vector_int(title,arr)
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:)
+   call print_matrix_int(title,reshape(arr,[1,shape(arr)]))
+end subroutine print_vector_int
+
+subroutine print_matrix_int(title,arr)
+!@(#) print small 2d integer arrays in row-column format
+character(len=*),parameter :: all='(" > ",*(g0,1x))' ! a handy format
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:,:)
+integer                      :: i
+character(len=:),allocatable :: biggest
+
+   print all
+   print all, trim(title)
+   biggest='           '  ! make buffer to write integer into
+   ! find how many characters to use for integers
+   write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+   ! use this format to write a row
+   biggest='(" > [",*(i'//trim(biggest)//':,","))'
+   ! print one row of array at a time
+   do i=1,size(arr,dim=1)
+      write(*,fmt=biggest,advance='no')arr(i,:)
+      write(*,'(" ]")')
+   enddo
+
+end subroutine print_matrix_int
+
+end program demo_matmul
+
+
+

Results:

+
    >
+    > A is
+    > [  1,  3,  5 ]
+    > [  2,  4,  6 ]
+    >
+    > B is
+    > [  10,  40 ]
+    > [  20,  50 ]
+    > [  30,  60 ]
+    >
+    > C is
+    > [  1,  2 ]
+    >
+    > D is
+    > [  1,  2,  3 ]
+    >
+    > E is matmul(A,B)
+    > [  220,  490 ]
+    > [  280,  640 ]
+    >
+    > F is matmul(C,A)
+    > [   5,  11,  17 ]
+    >
+    > G is matmul(A,D)
+    > [  22,  28 ]
+    > shape
+    >
+    > Cd is a vector (not a scalar)
+    > [  3300 ]
+    >
+    > cD is a vector too
+    > [  3300 ]
+    >
+    > CD is a matrix
+    > [  3300 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

product(3), +transpose(3)

+
+
+

Resources#

+
    +
  • Matrix multiplication : Wikipedia

  • +
  • The Winograd variant of Strassen’s matrix-matrix multiply algorithm may +be of interest for optimizing multiplication of very large matrices. See

  • +
+
    "GEMMW: A portable level 3 BLAS Winograd variant of Strassen's
+    matrix-matrix multiply algorithm",
+
+    Douglas, C. C., Heroux, M., Slishman, G., and Smith, R. M.,
+    Journal of Computational Physics,
+    Vol. 110, No. 1, January 1994, pages 1-10.
+
+  The numerical instabilities of Strassen's method for matrix
+  multiplication requires special processing.
+
+
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

parity#

+
+

Name#

+

parity(3) - [ARRAY:REDUCTION] Array reduction by .NEQV. operation

+
+
+

Synopsis#

+
    result = parity( mask [,dim] )
+
+
+
     logical(kind=KIND) function parity(mask, dim)
+
+      type(logical(kind=KIND)),intent(in)        :: mask(..)
+      type(integer(kind=**)),intent(in),optional :: dim
+
+
+
+
+

Characteristics#

+
    +
  • mask is a logical array

  • +
  • dim is an integer scalar

  • +
  • the result is of type logical with the same kind type parameter as mask. +It is a scalar if dim does not appear; otherwise it is the rank and shape +of mask with the dimension specified by dim removed.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

parity(3) calculates the parity array (i.e. the reduction using .neqv.) of +mask along dimension dim if dim is present and not 1. Otherwise, it +returns the parity of the entire mask array as a scalar.

+
+
+

Options#

+
    +
  • +
    mask

    Shall be an array of type logical.

    +
    +
    +
  • +
  • +
    dim

    (Optional) shall be a scalar of type integer with a value in the +range from 1 to n, where n equals the rank of mask.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as mask.

+

If dim is absent, a scalar with the parity of all elements in mask +is returned: .true. if an odd number of elements are .true. +and .false. otherwise.

+

If MASK has rank one, PARITY (MASK, DIM) is equal to PARITY (MASK). Otherwise, the +result is an array of parity values with dimension dim dropped.

+
+
+

Examples#

+

Sample program:

+
program demo_parity
+implicit none
+logical, parameter :: T=.true., F=.false.
+logical :: x(3,4)
+  ! basics
+   print *, parity([T,F])
+   print *, parity([T,F,F])
+   print *, parity([T,F,F,T])
+   print *, parity([T,F,F,T,T])
+   x(1,:)=[T,T,T,T]
+   x(2,:)=[T,T,T,T]
+   x(3,:)=[T,T,T,T]
+   print *, parity(x)
+   print *, parity(x,dim=1)
+   print *, parity(x,dim=2)
+end program demo_parity
+
+
+

Results:

+
 >  T
+ >  T
+ >  F
+ >  T
+ >  F
+ >  T T T T
+ >  F F F
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+
    +
  • all(3) - Determines if all the values are true

  • +
  • any(3) - Determines if any of the values in the logical array are .true.

  • +
  • count(3) - Count true values in an array

  • +
  • sum(3) - Sum the elements of an array

  • +
  • maxval(3) - Determines the maximum value in an array or row

  • +
  • minval(3) - Minimum value of an array

  • +
  • product(3) - Product of array elements

  • +
  • reduce(3) - General array reduction

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

null#

+
+

Name#

+

null(3) - [TRANSFORMATIONAL] Function that returns a disassociated pointer

+
+
+

Synopsis#

+
    ptr => null( [mold] )
+
+
+
     function null(mold)
+
+      type(TYPE(kind=**)),pointer,optional :: mold
+
+
+
+
+

Characteristics#

+
    +
  • mold is a pointer of any association status and of any type.

  • +
  • The result is a disassociated pointer or an unallocated allocatable entity.

  • +
+
+
+

Description#

+

null(3) returns a disassociated pointer.

+

If mold is present, a disassociated pointer of the same type is +returned, otherwise the type is determined by context.

+

In Fortran 95, mold is optional. Please note that Fortran 2003 +includes cases where it is required.

+
+
+

Options#

+
    +
  • +
    mold

    a pointer of any association status and of any +type.

    +
    +
    +
  • +
+
+
+

Result#

+

A disassociated pointer or an unallocated allocatable entity.

+
+
+

Examples#

+

Sample program:

+
!program demo_null
+module showit
+implicit none
+private
+character(len=*),parameter :: g='(*(g0,1x))'
+public gen
+! a generic interface that only differs in the
+! type of the pointer the second argument is
+interface gen
+ module procedure s1
+ module procedure s2
+end interface
+
+contains
+
+subroutine s1 (j, pi)
+ integer j
+ integer, pointer :: pi
+   if(associated(pi))then
+      write(*,g)'Two integers in S1:,',j,'and',pi
+   else
+      write(*,g)'One integer in S1:,',j
+   endif
+end subroutine s1
+
+subroutine s2 (k, pr)
+ integer k
+ real, pointer :: pr
+   if(associated(pr))then
+      write(*,g)'integer and real in S2:,',k,'and',pr
+   else
+      write(*,g)'One integer in S2:,',k
+   endif
+end subroutine s2
+
+end module showit
+
+program demo_null
+use showit, only : gen
+
+real,target :: x = 200.0
+integer,target :: i = 100
+
+real, pointer :: real_ptr
+integer, pointer :: integer_ptr
+
+! so how do we call S1() or S2() with a disassociated pointer?
+
+! the answer is the null() function with a mold value
+
+! since s1() and s2() both have a first integer
+! argument the NULL() pointer must be associated
+! to a real or integer type via the mold option
+! so the following can distinguish whether s1(1)
+! or s2() is called, even though the pointers are
+! not associated or defined
+
+call gen (1, null (real_ptr) )    ! invokes s2
+call gen (2, null (integer_ptr) ) ! invokes s1
+real_ptr => x
+integer_ptr => i
+call gen (3, real_ptr ) ! invokes s2
+call gen (4, integer_ptr ) ! invokes s1
+
+end program demo_null
+
+
+

Results:

+
   One integer in S2:, 1
+   One integer in S1:, 2
+   integer and real in S2:, 3 and 200.000000
+   Two integers in S1:, 4 and 100
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

associated(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/parallel/index.html b/learn/intrinsics/parallel/index.html new file mode 100644 index 000000000000..4a7e87f3c0c5 --- /dev/null +++ b/learn/intrinsics/parallel/index.html @@ -0,0 +1,4082 @@ + + + + + + + + + Parallel programming using co_arrays and co_indexed arrays — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Parallel programming using co_arrays and co_indexed arrays#

+
+

co_broadcast#

+
+

Name#

+

co_broadcast(3) - [COLLECTIVE] Copy a value to all images the current set of images

+
+
+

Synopsis#

+
    call co_broadcast(a, source_image [,stat] [,errmsg] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_broadcast(3) copies the value of argument a on the image with image +index source_image to all images in the current team. a becomes defined +as if by intrinsic assignment. If the execution was successful and stat +is present, it is assigned the value zero. If the execution failed, stat +gets assigned a nonzero value and, if present, errmsg gets assigned a +value describing the occurred error.

+
+
+

Options#

+
    +
  • +
    a

    intent(inout) argument; shall have the same dynamic type and +type parameters on all images of the current team. If it is an +array, it shall have the same shape on all images.

    +
    +
    +
  • +
  • +
    source_image

    a scalar integer expression. It shall have the same the same value +on all images and refer to an image of the current team.

    +
    +
    +
  • +
  • +
    stat

    (optional) a scalar integer variable

    +
    +
    +
  • +
  • +
    errmsg

    (optional) a scalar character variable

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_co_broadcast
+implicit none
+integer :: val(3)
+   if (this_image() == 1) then
+      val = [1, 5, 3]
+   endif
+   call co_broadcast (val, source_image=1)
+   print *, this_image(), ":", val
+end program demo_co_broadcast
+
+
+
+
+

Standard#

+

Fortran xx

+
+
+

See Also#

+

co_max(3), +co_min(3), +co_sum(3), +co_reduce(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_lbound#

+
+

Name#

+

co_lbound(3) - [COLLECTIVE] Lower codimension bounds of an array

+
+
+

Synopsis#

+
     result = co_lbound( coarray [,dim] [,kind] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_lbound(3) returns the lower bounds of a coarray, or a single +lower cobound along the dim codimension.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an coarray, of any type.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar integer.

    +
    +
    +
  • +
  • +
    kind

    (Optional) An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer and of kind kind. If kind is absent, +the return value is of default integer kind. If dim is absent, the +result is an array of the lower cobounds of coarray. If dim is present, +the result is a scalar corresponding to the lower cobound of the array +along that codimension.

+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

co_ubound(3), +lbound(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_max#

+
+

Name#

+

co_max(3) - [COLLECTIVE] Maximal value on the current set of images

+
+
+

Synopsis#

+
     call co_max(a, result_image [,stat] [,errmsg] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_max(3) determines element-wise the maximal value of a on all +images of the current team. If result_image is present, the maximum values +are returned in a on the specified image only and the value of a +on the other images become undefined. If result_image is not present, +the value is returned on all images. If the execution was successful +and stat is present, it is assigned the value zero. If the execution +failed, stat gets assigned a nonzero value and, if present, errmsg +gets assigned a value describing the occurred error.

+
+
+

Options#

+
    +
  • +
    a

    shall be an integer, real or character variable, which has the same +type and type parameters on all images of the team.

    +
    +
    +
  • +
  • +
    result_image

    (optional) a scalar integer expression; if present, it shall have +the same the same value on all images and refer to an image of the +current team.

    +
    +
    +
  • +
  • +
    stat

    (optional) a scalar integer variable

    +
    +
    +
  • +
  • +
    errmsg

    (optional) a scalar character variable

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_co_max
+implicit none
+integer :: val
+   val = this_image()
+   call co_max(val, result_image=1)
+   if (this_image() == 1) then
+     write(*,*) "Maximal value", val  ! prints num_images()
+   endif
+end program demo_co_max
+
+
+

Results:

+
    Maximal value           2
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

co_min(3), +co_sum(3), +co_reduce(3), +co_broadcast(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_min#

+
+

Name#

+

co_min(3) - [COLLECTIVE] Minimal value on the current set of images

+
+
+

Synopsis#

+
     call co_min(a, result_image [,stat] [,errmsg] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_min(3) determines element-wise the minimal value of a on all +images of the current team. If result_image is present, the minimal values +are returned in a on the specified image only and the value of a +on the other images become undefined. If result_image is not present, +the value is returned on all images. If the execution was successful +and stat is present, it is assigned the value zero. If the execution +failed, stat gets assigned a nonzero value and, if present, errmsg +gets assigned a value describing the occurred error.

+
+
+

Options#

+
    +
  • +
    a

    shall be an integer, real or character variable, which has the same +type and type parameters on all images of the team.

    +
    +
    +
  • +
  • +
    result_image

    (optional) a scalar integer expression; if present, it shall have +the same the same value on all images and refer to an image of the +current team.

    +
    +
    +
  • +
  • +
    stat

    (optional) a scalar integer variable

    +
    +
    +
  • +
  • +
    errmsg

    (optional) a scalar character variable

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_co_min
+implicit none
+integer :: val
+   val = this_image()
+   call co_min(val, result_image=1)
+   if (this_image() == 1) then
+     write(*,*) "Minimal value", val  ! prints 1
+   endif
+end program demo_co_min
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

co_max(3), +co_sum(3), +co_reduce(3), +co_broadcast(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_reduce#

+
+

Name#

+

co_reduce(3) - [COLLECTIVE] Reduction of values on the current set of images

+
+
+

Synopsis#

+
    call co_reduce(a, operation, result_image [,stat] [,errmsg] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_reduce(3) determines element-wise the reduction of the value of a on +all images of the current team. The pure function passed as operation is +used to pairwise reduce the values of a by passing either the value of a +of different images or the result values of such a reduction as +argument. If a is an array, the reduction is done element wise. If +result_image is present, the result values are returned in a on the +specified image only and the value of a on the other images become +undefined. If result_image is not present, the value is returned on all +images. If the execution was successful and stat is present, it is +assigned the value zero. If the execution failed, stat gets assigned a +nonzero value and, if present, errmsg gets assigned a value describing +the occurred error.

+
+
+

Options#

+
    +
  • +
    a

    is an intent(inout) argument and shall be nonpolymorphic. If it +is allocatable, it shall be allocated; if it is a pointer, it shall +be associated. a shall have the same type and type parameters on all +images of the team; if it is an array, it shall have the same shape +on all images.

    +
    +
    +
  • +
  • +
    operation

    pure function with two scalar nonallocatable arguments, which shall +be nonpolymorphic and have the same type and type parameters as a. +The function shall return a nonallocatable scalar of the same type +and type parameters as a. The function shall be the same on all +images and with regards to the arguments mathematically commutative +and associative. Note that OPERATION may not be an elemental unless +it is an intrinsic function.

    +
    +
    +
  • +
  • +
    result_image

    (optional) a scalar integer expression; if present, it shall +have the same the same value on all images and refer to an image +of the current team.

    +
    +
    +
  • +
  • +
    stat

    (optional) a scalar integer variable

    +
    +
    +
  • +
  • +
    errmsg

    (optional) a scalar character variable

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_co_reduce
+implicit none
+integer :: val
+
+   val = this_image()
+   call co_reduce(val, myprod, 1)
+   if (this_image() == 1) then
+      write(*,*) "Product value", val  ! prints num_images() factorial
+   endif
+
+contains
+
+pure function myprod(a, b)
+   integer, value :: a, b
+   integer :: myprod
+   myprod = a * b
+end function myprod
+
+end program demo_co_reduce
+
+
+
+
+

Note#

+

While the rules permit in principle an intrinsic function, none of the +intrinsics in the standard fulfill the criteria of having a specific +function, which takes two arguments of the same type and returning that +type as a result.

+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

co_min(3), +co_max(3), +co_sum(3), +co_broadcast(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_sum#

+
+

Name#

+

co_sum(3) - [COLLECTIVE] Sum of values on the current set of images

+
+
+

Synopsis#

+
    call co_sum(a, result_image [,stat] [,errmsg] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_sum(3) sums up the values of each element of a on all images +of the current team.

+

If result_image is present, the summed-up values are returned in a +on the specified image only and the value of a on the other images +become undefined.

+

If result_image is not present, the value is returned on all images. If +the execution was successful and stat is present, it is assigned the +value zero. If the execution failed, stat gets assigned a nonzero +value and, if present, errmsg gets assigned a value describing the +occurred error.

+
+
+

Options#

+
    +
  • +
    a

    shall be an integer, real or complex variable, which has the same +type and type parameters on all images of the team.

    +
    +
    +
  • +
  • +
    result_image

    (optional) a scalar integer expression; if present, it shall have +the same the same value on all images and refer to an image of the +current team.

    +
    +
    +
  • +
  • +
    stat

    (optional) a scalar integer variable

    +
    +
    +
  • +
  • +
    errmsg

    (optional) a scalar character variable

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_co_sum
+implicit none
+integer :: val
+   val = this_image()
+   call co_sum(val, result_image=1)
+   if (this_image() == 1) then
+      ! prints (n**2 + n)/2, with n = num_images()
+      write(*,*) "The sum is ", val
+   endif
+end program demo_co_sum
+
+
+

Results:

+
    The sum is            1
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

co_max(3), +co_min(3), +co_reduce(3), +co_broadcast(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

co_ubound#

+
+

Name#

+

co_ubound(3) - [COLLECTIVE] Upper codimension bounds of an array

+
+
+

Synopsis#

+
    result = co_ubound(coarray [,dim] [,kind] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

co_ubound(3) returns the upper cobounds of a coarray, or a single +upper cobound along the dim codimension.

+
+
+

Options#

+
    +
  • +
    array

    Shall be an coarray, of any type.

    +
    +
    +
  • +
  • +
    dim

    (Optional) Shall be a scalar integer.

    +
    +
    +
  • +
  • +
    kind

    (Optional) An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type integer and of kind kind. If kind is absent, +the return value is of default integer kind. If dim is absent, the +result is an array of the lower cobounds of coarray. If dim is present, +the result is a scalar corresponding to the lower cobound of the array +along that codimension.

+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

co_lbound(3), +lbound(3), +ubound(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

event_query#

+
+

Name#

+

event_query(3) - [COLLECTIVE] Query whether a coarray event has occurred

+
+
+

Synopsis#

+
    call event_query(event, count [,stat] )
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

event_query(3) assigns the number of events to count which have been +posted to the event variable and not yet been removed by calling +event_wait. When stat is present and the invocation was successful, it +is assigned the value 0. If it is present and the invocation has failed, +it is assigned a positive value and count is assigned the value -1.

+
+
+

Options#

+
    +
  • +
    event

    (intent(in)) Scalar of type event_type, defined in +iso_fortran_env; shall not be coindexed.

    +
    +
    +
  • +
  • +
    count

    (intent(out))Scalar integer with at least the precision of default +integer.

    +
    +
    +
  • +
  • +
    stat

    (OPTIONAL) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_event_query
+use iso_fortran_env
+implicit none
+type(event_type) :: event_value_has_been_set[*]
+integer :: cnt
+   if (this_image() == 1) then
+      call event_query(event_value_has_been_set, cnt)
+      if (cnt > 0) write(*,*) "Value has been set"
+   elseif (this_image() == 2) then
+      event post(event_value_has_been_set[1])
+   endif
+end program demo_event_query
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

image_index#

+
+

Name#

+

image_index(3) - [COLLECTIVE] Cosubscript to image index conversion

+
+
+

Synopsis#

+
    result = image_index(coarray, sub)
+
+
+

+
+
+
+
+

Characteristics#

+
+
+

Description#

+

image_index(3) returns the image index belonging to a cosubscript.

+
+
+

Options#

+
    +
  • +
    coarray

    Coarray of any type.

    +
    +
    +
  • +
  • +
    sub

    default integer rank-1 array of a size equal to the corank of +coarray.

    +
    +
    +
  • +
+
+
+

Result#

+

Scalar default integer with the value of the image index which +corresponds to the cosubscripts. For invalid cosubscripts the result is +zero.

+
+
+

Examples#

+

Sample program:

+
program demo image_index
+implicit none
+integer :: array[2,-1:4,8,*]
+   ! Writes  28 (or 0 if there are fewer than 28 images)
+   write (*,*) image_index(array, [2,0,3,1])
+end demo image_index
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See Also#

+

this_image(3), +num_images(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

num_images#

+
+

Name#

+

num_images(3) - [COLLECTIVE] Number of images

+
+
+

Synopsis#

+
    result = num_images([team|team_number])
+
+
+
     integer function num_images (team)
+
+      type(TEAM_TYPE),intent(in),optional    :: team
+      integer(kind=KIND),intent(in),optional :: team_number
+
+
+
+
+

Characteristics#

+
    +
  • use of team and team_number is mutually exclusive

  • +
  • team is is a scalar of of type TEAM_TYPE from the intrinsic module ISO_FORTRAN_ENV.

  • +
  • team_number is an integer scalar.

  • +
  • the result is a default integer scalar.

  • +
+
+
+

Description#

+

num_images(3) Returns the number of images.

+
+
+

Options#

+
    +
  • +
    team

    shall be a scalar of type TEAM_TYPE from the intrinsic module +ISO_FORTRAN_ENV, with a value that identifies the current or an +ancestor team.

    +
    +
    +
  • +
  • +
    team_number

    identifies the initial team or a team whose parent is the same as +that of the current team.

    +
    +
    +
  • +
+
+
+

Result#

+

The number of images in the specified team, or in the current team if +no team is specified.

+
+
+

Examples#

+

Sample program:

+
program demo_num_images
+implicit none
+integer :: value[*]
+real    :: p[*]
+integer :: i
+
+   value = this_image()
+   sync all
+   if (this_image() == 1) then
+     do i = 1, num_images()
+       write(*,'(2(a,i0))') 'value[', i, '] is ', value[i]
+     end do
+   endif
+
+ ! The following code uses image 1 to read data and
+ ! broadcast it to other images.
+   if (this_image()==1) then
+      p=1234.5678
+      do i = 2, num_images()
+         p[i] = p
+      end do
+   end if
+   sync all
+
+end program demo_num_images
+
+
+
+
+

Standard#

+

Fortran 2008 . With DISTANCE or FAILED argument, TS 18508

+
+
+

See Also#

+

this_image(3), +image_index(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

this_image#

+
+

Name#

+

this_image(3) - [COLLECTIVE] Cosubscript index of this image

+
+
+

Synopsis#

+
result = this_image() | = this_image(distance) | = this_image(coarray,dim)
+
+
+
   integer function this_image( distance ,coarray, dim )
+
+    type(TYPE(kind=**),optional :: coarray[*]
+    integer,intent(in),optional :: distance
+    integer,intent(in),optional :: dim
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • coarray can be of any type. If dim is present it is required.

  • +
  • distance is not permitted together with coarray

  • +
  • if dim if present, coarray is required.

  • +
+
+
+

Description#

+

this_image(3) returns the cosubscript for this image.

+
+
+

Options#

+
    +
  • +
    distance

    Nonnegative scalar integer (not permitted together with coarray).

    +
    +
    +
  • +
  • +
    coarray

    if dim present, required).

    +
    +
    +
  • +
  • +
    dim

    If present, dim shall be between one and the corank of coarray.

    +
    +
    +
  • +
+
+
+

Result#

+

Default integer. If coarray is not present, it is scalar; if distance is +not present or has value 0, its value is the image index on the invoking +image for the current team, for values smaller or equal distance to the +initial team, it returns the image index on the ancestor team which has +a distance of distance from the invoking team. If distance is larger +than the distance to the initial team, the image index of the initial +team is returned. Otherwise when the coarray is present, if dim is not +present, a rank-1 array with corank elements is returned, containing the +cosubscripts for coarray specifying the invoking image. If dim is +present, a scalar is returned, with the value of the dim element of +this_image(coarray).

+
+
+

Examples#

+

Sample program:

+
program demo_this_image
+implicit none
+integer :: value[*]
+integer :: i
+   value = this_image()
+   sync all
+   if (this_image() == 1) then
+      do i = 1, num_images()
+         write(*,'(2(a,i0))') 'value[', i, '] is ', value[i]
+      end do
+   endif
+end program demo_this_image
+
+
+

Results:

+
   value[1] is 1
+
+
+
+
+

Standard#

+

Fortran 2008. With DISTANCE argument, TS 18508

+
+
+

See Also#

+

num_images(3), +image_index(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_and#

+
+

Name#

+

atomic_and(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise AND operation

+
+
+

Synopsis#

+
    call atomic_and(atom, value [,stat])
+
+
+
     subroutine atomic_and(atom,value,stat)
+
+      integer(atomic_int_kind)            :: atom[*]
+      integer(atomic_int_kind),intent(in) :: value
+      integer,intent(out),intent(out)     :: stat
+
+
+
+
+

Characteristics#

+
    +
  • atom is a scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

  • +
  • value is a scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

  • +
  • stat is a Scalar default-kind integer variable.

  • +
+
+
+

Description#

+

atomic_and(3) atomically defines atom with the bitwise +and between the values of atom and value. When stat is present and the +invocation was successful, it is assigned the value 0. If it is present +and the invocation has failed, it is assigned a positive value; in +particular, for a coindexed atom, if the remote image has stopped, it is +assigned the value of iso_fortran_env’s stat_stopped_image and if +the remote image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_and
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*]
+   call atomic_and(atom[1], int(b'10100011101'))
+end program demo_atomic_and
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_fetch_and(3), +atomic_define(3), +atomic_ref(3), +atomic_cas(3), +iso_fortran_env(3), +atomic_add(3), +atomic_or(3), +atomic_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_fetch_and#

+
+

Name#

+

atomic_fetch_and(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise AND operation with prior fetch

+
+
+

Synopsis#

+
    call atomic_fetch_and(atom, value, old [,stat] )
+
+
+
     subroutine atomic_fetch_and(atom, value, old, stat)
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_fetch_and(3) atomically stores the value of +atom in old and defines atom with the bitwise AND between the values of +atom and value. When stat is present and the invocation was successful, +it is assigned the value 0. If it is present and the invocation has +failed, it is assigned a positive value; in particular, for a coindexed +atom, if the remote image has stopped, it is assigned the value of +iso_fortran_env’s stat_stopped_image and if the remote image has +failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    old

    Scalar of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_fetch_and
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*], old
+   call atomic_fetch_and (atom[1], int(b'10100011101'), old)
+end program demo_atomic_fetch_and
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_and(3), +iso_fortran_env(3),

+

atomic_fetch_add(3), +atomic_fetch_or(3),

+

atomic_fetch_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_fetch_or#

+
+

Name#

+

atomic_fetch_or(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise OR operation with prior fetch

+
+
+

Synopsis#

+
    call atomic_fetch_or(atom, value, old [,stat] )
+
+
+
     subroutine atomic_fetch_or(atom, value, old, stat)
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_fetch_or(3) atomically stores the value of +atom in old and defines atom with the bitwise OR between the values of +atom and value. When stat is present and the invocation was successful, +it is assigned the value 0. If it is present and the invocation has +failed, it is assigned a positive value; in particular, for a coindexed +atom, if the remote image has stopped, it is assigned the value of +iso_fortran_env’s stat_stopped_image and if the remote image has +failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    old

    Scalar of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_fetch_or
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*], old
+   call atomic_fetch_or(atom[1], int(b'10100011101'), old)
+end program demo_atomic_fetch_or
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_or(3), +iso_fortran_env(3),

+

atomic_fetch_add(3), +atomic_fetch_and(3),

+

atomic_fetch_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_fetch_xor#

+
+

Name#

+

atomic_fetch_xor(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise XOR operation with prior fetch

+
+
+

Synopsis#

+
    call atomic_fetch_xor (atom, value, old [,stat] )
+
+
+
     subroutine atomic_fetch_xor (atom, value, old, stat)
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_fetch_xor(3) atomically stores the value of +atom in old and defines atom with the bitwise xor between the values of +atom and value. When stat is present and the invocation was successful, +it is assigned the value 0. If it is present and the invocation has +failed, it is assigned a positive value; in particular, for a coindexed +atom, if the remote image has stopped, it is assigned the value of +iso_fortran_env’s stat_stopped_image and if the remote image has +failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    old

    Scalar of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_fetch_xor
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*], old
+   call atomic_fetch_xor (atom[1], int(b'10100011101'), old)
+end program demo_atomic_fetch_xor
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_xor(3), +iso_fortran_env(3),

+

atomic_fetch_add(3), +atomic_fetch_and(3),

+

atomic_fetch_or(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_or#

+
+

Name#

+

atomic_or(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise OR operation

+
+
+

Synopsis#

+
    call atomic_or(atom, value [,stat] )
+
+
+
     subroutine atomic_or(atom,value,stat)
+
+      integer(atomic_int_kind)            :: atom[*]
+      integer(atomic_int_kind),intent(in) :: value
+      integer,intent(out),intent(out)     :: stat
+
+
+
+
+

Characteristics#

+
    +
  • atom is a scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

  • +
  • value is a scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

  • +
  • stat is a Scalar default-kind integer variable.

  • +
+
+
+

Description#

+

atomic_or(3) atomically defines atom with the bitwise or +between the values of atom and value. When stat is present and the +invocation was successful, it is assigned the value 0. If it is present +and the invocation has failed, it is assigned a positive value; in +particular, for a coindexed atom, if the remote image has stopped, it is +assigned the value of iso_fortran_env’s stat_stopped_image and if +the remote image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_or
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*]
+   call atomic_or(atom[1], int(b'10100011101'))
+end program demo_atomic_or
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_fetch_or(3),

+

iso_fortran_env(3), +atomic_add(3), +atomic_or(3),

+

atomic_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_xor#

+
+

Name#

+

atomic_xor(3) - [ATOMIC:BIT MANIPULATION] Atomic bitwise OR operation

+
+
+

Synopsis#

+
    call atomic_xor(atom, value [,stat] )
+
+
+
     subroutine atomic_xor(atom,value,stat)
+
+      integer(atomic_int_kind)            :: atom[*]
+      integer(atomic_int_kind),intent(in) :: value
+      integer,intent(out),intent(out)     :: stat
+
+
+
+
+

Characteristics#

+
    +
  • atom is a scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

  • +
  • value is a scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

  • +
  • stat is a Scalar default-kind integer variable.

  • +
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_xor(3) atomically defines atom with the bitwise +xor between the values of atom and value. When stat is present and the +invocation was successful, it is assigned the value 0. If it is present +and the invocation has failed, it is assigned a positive value; in +particular, for a coindexed atom, if the remote image has stopped, it is +assigned the value of iso_fortran_env’s stat_stopped_image and if +the remote image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_xor
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*]
+   call atomic_xor(atom[1], int(b'10100011101'))
+end program demo_atomic_xor
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_fetch_xor(3), +iso_fortran_env(3), +atomic_add(3), +atomic_or(3), +atomic_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_add#

+
+

Name#

+

atomic_add(3) - [ATOMIC] Atomic ADD operation

+
+
+

Synopsis#

+
    call atomic_add (atom, value [,stat] )
+
+
+
     subroutine atomic_add(atom,value,stat)
+
+      integer(atomic_int_kind)            :: atom[*]
+      integer(atomic_int_kind),intent(in) :: value
+      integer,intent(out),intent(out)     :: stat
+
+
+
+
+

Characteristics#

+
    +
  • atom is a scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

  • +
  • value is a scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

  • +
  • stat is a Scalar default-kind integer variable.

  • +
+
+
+

Description#

+

atomic_add(3) atomically adds the value of VAR to the +variable atom. When stat is present and the invocation was successful, +it is assigned the value 0. If it is present and the invocation has +failed, it is assigned a positive value; in particular, for a coindexed +ATOM, if the remote image has stopped, it is assigned the value of +iso_fortran_env’s STAT_STOPPED_IMAGE and if the remote image has +failed, the value STAT_FAILED_IMAGE.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_add
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*]
+   call atomic_add (atom[1], this_image())
+end program demo_atomic_add
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_fetch_add(3), +atomic_and(3), +atomic_or(3), +atomic_xor(3) +iso_fortran_env(3),

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_cas#

+
+

Name#

+

atomic_cas(3) - [ATOMIC] Atomic compare and swap

+
+
+

Synopsis#

+
    call atomic_cas (atom, old, compare, new [,stat] )
+
+
+
     subroutine atomic_cas (atom, old, compare, new, stat)
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_cas(3) compares the variable atom with the value of +compare; if the value is the same, atom is set to the value of +new. Additionally, old is set to the value of atom that was +used for the comparison. When stat is present and the invocation +was successful, it is assigned the value 0. If it is present and the +invocation has failed, it is assigned a positive value; in particular, +for a coindexed atom, if the remote image has stopped, it is assigned +the value of iso_fortran_env’s stat_stopped_image and if the remote +image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of either integer type with +atomic_int_kind kind or logical type with atomic_logical_kind +kind.

    +
    +
    +
  • +
  • +
    old

    Scalar of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    compare

    Scalar variable of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    new

    Scalar variable of the same type as atom. If kind is different, the +value is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_cas
+use iso_fortran_env
+implicit none
+logical(atomic_logical_kind) :: atom[*], prev
+   call atomic_cas(atom[1], prev, .false., .true.)
+end program demo_atomic_cas
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_ref(3), +iso_fortran_env(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_define#

+
+

Name#

+

atomic_define(3) - [ATOMIC] Setting a variable atomically

+
+
+

Synopsis#

+
    call atomic_define (atom, value [,stat] )
+
+
+
     subroutine atomic_define(atom, value, stat)
+
+      TYPE(kind=atomic_KIND_kind) :: atom[*]
+      TYPE(kind=KIND) :: value
+      integer,intent(out),optional :: stat
+
+
+
+
+

Characteristics#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of either integer type with +atomic_int_kind kind or logical type with atomic_logical_kind +kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Description#

+

atomic_define(3) defines the variable atom with the value +value atomically.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable to atomically assign the +value value to. +kind.

    +
    +
    +
  • +
  • +
    value

    value to assign to atom

    +
    +
    +
  • +
  • +
    stat

    When stat is present and the invocation was +successful, it is assigned the value 0. If it is present and the +invocation has failed, it is assigned a positive value; in particular, +for a coindexed atom, if the remote image has stopped, it is assigned +the value of iso_fortran_env’s stat_stopped_image and if the remote +image has failed, the value stat_failed_image.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_define
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*]
+    call atomic_define(atom[1], this_image())
+end program demo_atomic_define
+
+
+
+
+

Standard#

+

Fortran 2008 ; with stat, TS 18508

+
+
+

See Also#

+

atomic_ref(3), +atomic_cas(3), +iso_fortran_env(3), +atomic_add(3), +atomic_and(3), +atomic_or(3), +atomic_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_fetch_add#

+
+

Name#

+

atomic_fetch_add(3) - [ATOMIC] Atomic ADD operation with prior fetch

+
+
+

Synopsis#

+
    call atomic_fetch_add(atom, value, old [,stat] )
+
+
+
     subroutine atomic_fetch_add(atom, value, old, stat)
+
+
+
+
+

Characteristics#

+
+
+

Description#

+

atomic_fetch_add(3) atomically stores the value of atom in old +and adds the value of var to the variable atom. When stat is +present and the invocation was successful, it is assigned the value 0. +If it is present and the invocation has failed, it is assigned a positive +value; in particular, for a coindexed atom, if the remote image has +stopped, it is assigned the value of iso_fortran_env’s stat_stopped_image +and if the remote image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    atom

    Scalar coarray or coindexed variable of integer type with +atomic_int_kind kind. atomic_logical_kind kind.

    +
    +
    +
  • +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    old

    Scalar of the same type and kind as atom.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_fetch_add
+use iso_fortran_env
+implicit none
+integer(atomic_int_kind) :: atom[*], old
+   call atomic_add(atom[1], this_image(), old)
+end program demo_atomic_fetch_add
+
+
+
+
+

Standard#

+

TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_add(3), +iso_fortran_env(3),

+

atomic_fetch_and(3), +atomic_fetch_or(3),

+

atomic_fetch_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

atomic_ref#

+
+

Name#

+

atomic_ref(3) - [ATOMIC] Obtaining the value of a variable atomically

+
+
+

Synopsis#

+
    call atomic_ref(value, atom [,stat] )
+
+
+
     subroutine atomic_ref(value,atom,stat)
+
+      integer(atomic_int_kind),intent(in) :: value
+      integer(atomic_int_kind)            :: atom[*]
+      integer,intent(out),intent(out)     :: stat
+
+
+
+
+

Characteristics#

+
    +
  • atom is a scalar coarray or coindexed variable of either integer +type with atomic_int_kind kind or logical type with atomic_logical_kind +kind.

  • +
  • value is a scalar of the same type as atom. If the kind is +different, the value is converted to the kind of atom.

  • +
  • stat is a Scalar default-kind integer variable.

  • +
+
+
+

Description#

+

atomic_ref(3) atomically assigns the value of the +variable atom to value. When stat is present and the invocation was +successful, it is assigned the value 0. If it is present and the +invocation has failed, it is assigned a positive value; in particular, +for a coindexed atom, if the remote image has stopped, it is assigned +the value of iso_fortran_env’s stat_stopped_image and if the remote +image has failed, the value stat_failed_image.

+
+
+

Options#

+
    +
  • +
    value

    Scalar of the same type as atom. If the kind is different, the value +is converted to the kind of atom.

    +
    +
    +
  • +
  • +
    atom

    Scalar coarray or coindexed variable of either integer type with +atomic_int_kind kind or logical type with atomic_logical_kind +kind.

    +
    +
    +
  • +
  • +
    stat

    (optional) Scalar default-kind integer variable.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_atomic_ref
+use iso_fortran_env
+implicit none
+logical(atomic_logical_kind) :: atom[*]
+logical :: val
+   call atomic_ref( val, atom[1] )
+   if (val) then
+      print *, "Obtained"
+   endif
+end program demo_atomic_ref
+
+
+
+
+

Standard#

+

Fortran 2008 ; with STAT, TS 18508

+
+
+

See Also#

+

atomic_define(3), +atomic_cas(3), +iso_fortran_env(3),

+

atomic_fetch_add(3), +atomic_fetch_and(3),

+

atomic_fetch_or(3), +atomic_fetch_xor(3)

+

fortran-lang intrinsic descriptions

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/state/index.html b/learn/intrinsics/state/index.html new file mode 100644 index 000000000000..030526d2bd82 --- /dev/null +++ b/learn/intrinsics/state/index.html @@ -0,0 +1,2165 @@ + + + + + + + + + General and miscellaneous intrinsics — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

General and miscellaneous intrinsics#

+
+

associated#

+
+

Name#

+

associated(3) - [STATE:INQUIRY] Association status of a pointer or pointer/target pair

+
+
+

Synopsis#

+
    result = associated(pointer [,target])
+
+
+
     logical function associated(pointer,target)
+
+      type(TYPE(kind=KIND),pointer :: pointer
+      type(TYPE(kind=KIND),pointer,optional :: target
+
+
+
+
+

Characteristics#

+
    +
  • pointer shall have the pointer attribute and it can be any type +or may be a procedure pointer

  • +
  • target shall be a pointer or a target. It must have the +same type, kind type parameter, and array rank as pointer.

  • +
  • The association status of neither pointer nor target shall +be undefined.

  • +
  • the result is a default logical value

  • +
+
+
+

Description#

+

associated(3) determines the status of the pointer pointer +or if pointer is associated with the target target.

+
+
+

Options#

+
    +
  • +
    pointer

    A pointer to test for association. +Its pointer association status shall not be undefined.

    +
    +
    +
  • +
  • +
    target

    A target that is to be tested for occupying the same storage +units as the pointer pointer. That is, it is tested as to whether it +is pointed to by pointer.

    +
    +
    +
  • +
+
+
+

Result#

+

associated(3f) returns a scalar value of type logical. +There are several cases:

+
    +
  1. When the optional target is not present then associated(pointer) +is .true. if pointer is associated with a target; otherwise, it +returns .false..

  2. +
  3. If target is present and a scalar target, the result is .true. if +target is not a zero-sized storage sequence and the target +associated with pointer occupies the same storage units. If pointer +is disassociated, the result is .false..

  4. +
  5. If target is present and an array target, the result is .true. if +target and pointer have the same shape, are not zero-sized arrays, +are arrays whose elements are not zero-sized storage sequences, and +target and pointer occupy the same storage units in array element +order.

    +

    As in case 2, the result is .false., if pointer is disassociated.

    +
  6. +
  7. If target is present and an scalar pointer, the result is .true. if +target is associated with pointer, the target associated with target +are not zero-sized storage sequences and occupy the same storage +units.

    +

    The result is .false., if either target or pointer is disassociated.

    +
  8. +
  9. If target is present and an array pointer, the result is .true. if +target associated with pointer and the target associated with target +have the same shape, are not zero-sized arrays, are arrays whose +elements are not zero-sized storage sequences, and target and +pointer occupy the same storage units in array element order.

  10. +
  11. If target is present and is a procedure, the result is true if and +only if pointer is associated with target and, if target is an +internal procedure, they have the same host instance.

  12. +
  13. If target is present and is a procedure pointer, the result is true +if and only if pointer and target are associated with the same +procedure and, if the procedure is an internal procedure, they have +the same host instance.

  14. +
+
+
+

Examples#

+

Sample program:

+
program demo_associated
+implicit none
+real, target  :: tgt(2) = [1., 2.]
+real, pointer :: ptr(:)
+   ptr => tgt
+   if (associated(ptr)     .eqv. .false.) &
+   & stop 'POINTER NOT ASSOCIATED'
+   if (associated(ptr,tgt) .eqv. .false.) &
+   & stop 'POINTER NOT ASSOCIATED TO TARGET'
+end program demo_associated
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

null(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

extends_type_of#

+
+

Name#

+

extends_type_of(3) - [STATE:INQUIRY] Determine if the dynamic type +of a is an extension of the dynamic type of mold.

+
+
+

Synopsis#

+
    result = extends_type_of(a, mold)
+
+
+
     logical extends_type_of(a, mold)
+
+      type(TYPE(kind=KIND),intent(in) :: a
+      type(TYPE(kind=KIND),intent(in) :: mold
+
+
+
+
+

Characteristics#

+

-a shall be an object or pointer to an extensible declared type, +or unlimited polymorphic. If it is a polymorphic pointer, it +shall not have an undefined association status. -mole shall be an object or pointer to an extensible declared type +or unlimited polymorphic. If it is a polymorphic pointer, +it shall not have an undefined association status.

+
    +
  • the result is a scalar default logical type.

  • +
+
+
+

Description#

+

extends_type_of(3) is .true. if and only if the dynamic type of +a is or could be (for unlimited polymorphic) an extension of the +dynamic type of mold.

+
+

NOTE1#

+

The dynamic type of a disassociated pointer or unallocated allocatable +variable is its declared type.

+
+
+

NOTE2#

+

The test performed by extends_type_of is not the same as the +test performed by the type guard class is. The test performed by +extends_type_of does not consider kind type parameters.

+
+
+
+

options#

+
    +
  • +
    a

    be an object of extensible declared type or unlimited +polymorphic. If it is a polymorphic pointer, it shall not have an +undefined association status.

    +
    +
    +
  • +
  • +
    mold

    be an object of extensible declared type or unlimited +polymorphic. If it is a polymorphic pointer, it shall not have an +undefined association status.

    +
    +
    +
  • +
+
+
+

Result#

+

If mold is unlimited polymorphic and is either a disassociated +pointer or unallocated allocatable variable, the result is true.

+

Otherwise if a is unlimited polymorphic and is either a +disassociated pointer or unallocated allocatable variable, the result +is false.

+

Otherwise the result is true if and only if the dynamic type of a

+

if the dynamic type of A or MOLD is extensible, the result is true if +and only if the dynamic type of A is an extension type of the dynamic +type of MOLD; otherwise the result is processor dependent.

+
+
+

Examples#

+

Sample program:

+
  ! program demo_extends_type_of
+  module M_demo_extends_type_of
+  implicit none
+  private
+
+  type nothing
+  end type nothing
+
+  type, extends(nothing) :: dot
+    real :: x=0
+    real :: y=0
+  end type dot
+
+  type, extends(dot) :: point
+    real :: z=0
+  end type point
+
+  type something_else
+  end type something_else
+
+  public :: nothing
+  public :: dot
+  public :: point
+  public :: something_else
+
+  end module M_demo_extends_type_of
+
+  program demo_extends_type_of
+  use M_demo_extends_type_of, only : nothing, dot, point, something_else
+  implicit none
+  type(nothing) :: grandpa
+  type(dot) :: dad
+  type(point) :: me
+  type(something_else) :: alien
+
+   write(*,*)'these should all be true'
+   write(*,*)extends_type_of(me,grandpa),'I am descended from Grandpa'
+   write(*,*)extends_type_of(dad,grandpa),'Dad is descended from Grandpa'
+   write(*,*)extends_type_of(me,dad),'Dad is my ancestor'
+
+   write(*,*)'is an object an extension of itself?'
+   write(*,*)extends_type_of(grandpa,grandpa) ,'self-propagating!'
+   write(*,*)extends_type_of(dad,dad) ,'clone!'
+
+   write(*,*)' you did not father your grandfather'
+   write(*,*)extends_type_of(grandpa,dad),'no paradox here'
+
+   write(*,*)extends_type_of(dad,me),'no paradox here'
+   write(*,*)extends_type_of(grandpa,me),'no relation whatsoever'
+   write(*,*)extends_type_of(grandpa,alien),'no relation'
+   write(*,*)extends_type_of(me,alien),'not what everyone thinks'
+
+   call pointers()
+   contains
+
+   subroutine pointers()
+   ! Given the declarations and assignments
+   type t1
+   real c
+   end type
+   type, extends(t1) :: t2
+   end type
+   class(t1), pointer :: p, q
+      allocate (p)
+      allocate (t2 :: q)
+      ! the result of EXTENDS_TYPE_OF (P, Q) will be false, and the result
+      ! of EXTENDS_TYPE_OF (Q, P) will be true.
+      write(*,*)'(P,Q)',extends_type_of(p,q),"mind your P's and Q's"
+      write(*,*)'(Q,P)',extends_type_of(q,p)
+   end subroutine pointers
+
+  end program demo_extends_type_of
+
+
+

Results:

+
    these should all be true
+    T I am descended from Grandpa
+    T Dad is descended from Grandpa
+    T Dad is my ancestor
+    is an object an extension of itself?
+    T self-propagating!
+    T clone!
+     you did not father your grandfather
+    F no paradox here
+    F no paradox here
+    F no relation whatsoever
+    F no relation
+    F not what everyone thinks
+    (P,Q) F mind your P's and Q's
+    (Q,P) T
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

same_type_as(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

is_iostat_end#

+
+

Name#

+

is_iostat_end(3) - [STATE:INQUIRY] Test for end-of-file value

+
+
+

Synopsis#

+
    result = is_iostat_end(i)
+
+
+
     elemental logical function is_iostat_end(i)
+
+      integer,intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i is integer of any kind

  • +
  • the return value is a default logical

  • +
+
+
+

Description#

+

is_iostat_end(3) tests whether a variable (assumed returned as a status +from an I/O statement) has the “end of file” I/O status value.

+

The function is equivalent to comparing the variable with the +iostat_end parameter of the intrinsic module iso_fortran_env.

+
+
+

Options#

+
    +
  • +
    i

    An integer status value to test if indicating end of file.

    +
    +
    +
  • +
+
+
+

Result#

+

returns .true. if and only ifi has the value +which indicates an end of file condition for iostat= specifiers, and is +.false. otherwise.

+
+
+

Examples#

+

Sample program:

+
program demo_iostat
+implicit none
+real               :: value
+integer            :: ios
+character(len=256) :: message
+   write(*,*)'Begin entering numeric values, one per line'
+   do
+      read(*,*,iostat=ios,iomsg=message)value
+      if(ios.eq.0)then
+         write(*,*)'VALUE=',value
+      elseif( is_iostat_end(ios) ) then
+         stop 'end of file. Goodbye!'
+      else
+         write(*,*)'ERROR:',ios,trim(message)
+         exit
+      endif
+      !
+   enddo
+end program demo_iostat
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

is_iostat_eor#

+
+

Name#

+

is_iostat_eor(3) - [STATE:INQUIRY] Test for end-of-record value

+
+
+

Synopsis#

+
    result = is_iostat_eor(i)
+
+
+
     elemental integer function is_iostat_eor(i)
+
+      integer(kind=KIND),intent(in) :: i
+
+
+
+
+

Characteristics#

+
    +
  • i is integer of any kind

  • +
  • the return value is a default logical

  • +
+
+
+

Description#

+

is_iostat_eor(3) tests whether a variable has the value of the +I/O status “end of record”. The function is equivalent to comparing +the variable with the iostat_eor parameter of the intrinsic module +iso_fortran_env.

+
+
+

Options#

+
    +
  • +
    i

    The value to test as indicating “end of record”.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if and only if i has the value which indicates +an end-of-record condition for iostat= specifiers, and is .false. +otherwise.

+
+
+

Examples#

+

Sample program:

+
program demo_is_iostat_eor
+use iso_fortran_env, only : iostat_eor
+implicit none
+integer :: inums(5), lun, ios
+
+  ! create a test file to read from
+   open(newunit=lun, form='formatted',status='scratch')
+   write(lun, '(a)') '10 20 30'
+   write(lun, '(a)') '40 50 60 70'
+   write(lun, '(a)') '80 90'
+   write(lun, '(a)') '100'
+   rewind(lun)
+
+   do
+      read(lun, *, iostat=ios) inums
+      write(*,*)'iostat=',ios
+      if(is_iostat_eor(ios)) then
+         stop 'end of record'
+      elseif(is_iostat_end(ios)) then
+         print *,'end of file'
+         exit
+      elseif(ios.ne.0)then
+         print *,'I/O error',ios
+         exit
+      endif
+   enddo
+
+   close(lun,iostat=ios,status='delete')
+
+end program demo_is_iostat_eor
+
+
+

Results:

+
 >  iostat=           0
+ >  iostat=          -1
+ >  end of file
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

move_alloc#

+
+

Name#

+

move_alloc(3) - [MEMORY] Move allocation from one object to another

+
+
+

Synopsis#

+
    call move_alloc(from, to [,stat] [,errmsg] )
+
+
+
     subroutine move_alloc(from, to)
+
+      type(TYPE(kind=**)),intent(inout),allocatable :: from(..)
+      type(TYPE(kind=**)),intent(out),allocatable   :: to(..)
+      integer(kind=**),intent(out)   :: stat
+      character(len=*),intent(inout) :: errmsg
+
+
+
+
+

Characteristics#

+
    +
  • from may be of any type and kind.

  • +
  • to shall be of the same type, kind and rank as from.

  • +
+
+
+

Description#

+

move_alloc(3) moves the allocation from from to +to. from will become deallocated in the process.

+

This is potentially more efficient than other methods of assigning +the values in from to to and explicitly deallocating from, +which are for more likely to require a temporary object or a copy of +the elements of the array.

+
+
+

Options#

+
    +
  • +
    from

    The data object to be moved to to and deallocated.

    +
    +
    +
  • +
  • +
    to

    The destination data object to move the allocated data object from +to. Typically, it is a different shape than from.

    +
    +
    +
  • +
  • +
    stat

    If stat is present and execution is successful, it is assigned the +value zero.

    +
    +

    If an error condition occurs,

    +

    o if stat is absent, error termination is initiated; +o otherwise, if from is a coarray and the current team contains a +stopped image, stat is assigned the value STAT_STOPPED_IMAGE +from the intrinsic module ISO_FORTRAN_ENV; +o otherwise, if from is a coarray and the current team contains +a failed image, and no other error condition +occurs, stat is assigned the value STAT_FAILED_IMAGE from the +intrinsic module ISO_FORTRAN_ENV; +o otherwise, stat is assigned a processor-dependent positive value +that differs from that of STAT_STOPPED_IMAGE or STAT_FAILED_IMAGE.

    +
    +
    +
  • +
  • +
    errmsg

    If the errmsg argument is present and an error condition occurs, +it is assigned an explanatory message. If no error condition occurs, +the definition status and value of errmsg are unchanged.

    +
    +
    +
  • +
+
+
+

Examples#

+

Basic sample program to allocate a bigger grid

+
program demo_move_alloc
+implicit none
+! Example to allocate a bigger GRID
+real, allocatable :: grid(:), tempgrid(:)
+integer :: n, i
+
+   ! initialize small GRID
+   n = 3
+   allocate (grid(1:n))
+   grid = [ (real (i), i=1,n) ]
+
+   ! initialize TEMPGRID which will be used to replace GRID
+   allocate (tempgrid(1:2*n))    ! Allocate bigger grid
+   tempgrid(::2)  = grid         ! Distribute values to new locations
+   tempgrid(2::2) = grid + 0.5   ! initialize other values
+
+   ! move TEMPGRID to GRID
+   call MOVE_ALLOC (from=tempgrid, to=grid)
+
+   ! TEMPGRID should no longer be allocated
+   ! and GRID should be the size TEMPGRID was
+   if (size (grid) /= 2*n .or. allocated (tempgrid)) then
+      print *, "Failure in move_alloc!"
+   endif
+   print *, allocated(grid), allocated(tempgrid)
+   print '(99f8.3)', grid
+end program demo_move_alloc
+
+
+

Results:

+
    T F
+      1.000   1.500   2.000   2.500   3.000   3.500
+
+
+
+
+

Standard#

+

Fortran 2003, STAT and ERRMSG options added 2018

+
+
+

See Also#

+

allocated(3)

+

fortran-lang intrinsic descriptions

+ +
+
+
+

present#

+
+

Name#

+

present(3) - [STATE:INQUIRY] Determine whether an optional dummy argument +is specified

+
+
+

Synopsis#

+
    result = present(a)
+
+
+
     logical function present (a)
+
+      type(TYPE(kind=KIND)) :: a(..)
+
+
+
+
+

Characteristics#

+
    +
  • a May be of any type and may be a pointer, scalar or array value, +or a dummy procedure.

  • +
+
+
+

Description#

+

present(3) can be used in a procedure to determine if an optional +dummy argument was present on the current call to the procedure.

+

a shall be the name of an optional dummy argument that is accessible +in the subprogram in which the present(3) function reference +appears. There are no other requirements on a.

+

Note when an argument is not present when the current procedure is +invoked, you may only pass it as an optional argument to another +procedure or pass it as an argument to present.

+
+
+

Options#

+
    +
  • +
    a

    the name of an optional dummy argument accessible within the current +subroutine or function.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns .true. if the optional argument a is present (was passed +on the call to the procedure) , or .false. otherwise.

+
+
+

Examples#

+

Sample program:

+
program demo_present
+implicit none
+integer :: answer
+   ! argument to func() is not present
+   answer=func()
+   write(*,*) answer
+   ! argument to func() is present
+   answer=func(1492)
+   write(*,*) answer
+contains
+!
+integer function func(x)
+! the optional characteristic on this definition allows this variable
+! to not be specified on a call; and also allows it to subsequently
+! be passed to PRESENT(3):
+integer, intent(in), optional :: x
+integer :: x_local
+   !
+   ! basic
+   if(present(x))then
+     ! if present, you can use x like any other variable.
+     x_local=x
+   else
+     ! if not, you cannot define or reference x except to
+     ! pass it as an optional parameter to another procedure
+     ! or in a call to present(3f)
+     x_local=0
+   endif
+   !
+   func=x_local**2
+   !
+   ! passing the argument on to other procedures
+   ! so something like this is a bad idea because x is used
+   ! as the first argument to merge(3f) when it might not be
+   ! present
+   ! xlocal=merge(x,0,present(x)) ! NO!!
+   !
+   ! We can pass it to another procedure if another
+   ! procedure declares the argument as optional as well,
+   ! or we have tested that X is present
+   call tattle('optional argument x',x)
+   if(present(x))call not_optional(x)
+end function
+!
+subroutine tattle(label,arg)
+character(len=*),intent(in) :: label
+integer,intent(in),optional :: arg
+   if(present(arg))then
+      write(*,*)label,' is present'
+   else
+      write(*,*)label,' is not present'
+   endif
+end subroutine tattle
+!
+subroutine not_optional(arg)
+integer,intent(in) :: arg
+   write(*,*)'already tested X is defined',arg
+end subroutine not_optional
+!
+end program demo_present
+
+
+

Results:

+
    optional argument x is not present
+              0
+    optional argument x is present
+    already tested X is defined 1492
+        2226064
+
+
+
+
+

Standard#

+

Fortran 95

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

same_type_as#

+
+

Name#

+

same_type_as(3) - [STATE:INQUIRY] Query dynamic types for equality

+
+
+

Synopsis#

+
    result = same_type_as(a, b)
+
+
+
     logical same_type_as(a, b)
+
+      type(TYPE(kind=KIND),intent(in) :: a
+      type(TYPE(kind=KIND),intent(in) :: b
+
+
+
+
+

Characteristics#

+
    +
  • a shall be an object of extensible declared type or unlimited +polymorphic. If it is a polymorphic pointer, it shall not have +an undefined association status.

  • +
  • b shall be an object of extensible declared type or unlimited +polymorphic. If it is a polymorphic pointer, it shall not have +an undefined association status.

  • +
+
+
+

Description#

+

same_type_as(3) queries the dynamic types of objects for equality.

+
+
+

Options#

+
    +
  • +
    a

    object to compare to b for equality of type

    +
    +
    +
  • +
  • +
    b

    object to be compared to for equality of type

    +
    +
    +
  • +
+
+
+

Result#

+

If the dynamic type of a or b is extensible, the result is true +if and only if the dynamic type of a is the same as the dynamic +type of b. If neither a nor b has extensible dynamic type, +the result is processor dependent.

+
NOTE1
+
+
+

The dynamic type of a disassociated pointer or unallocated allocatable +variable is its declared type. An unlimited polymorphic entity has no +declared type.

+
NOTE2
+
+
+

The test performed by SAME_TYPE_AS is not the same as the test performed +by the type guard TYPE IS. The test performed by SAME_TYPE_AS does +not consider kind type parameters.

+

Sample program:

+
  ! program demo_same_type_as
+  module M_ether
+  implicit none
+  private
+
+  type   :: dot
+    real :: x=0
+    real :: y=0
+  end type dot
+
+  type, extends(dot) :: point
+    real :: z=0
+  end type point
+
+  type something_else
+  end type something_else
+
+  public :: dot
+  public :: point
+  public :: something_else
+
+  end module M_ether
+
+  program demo_same_type_as
+  use M_ether, only : dot, point, something_else
+  implicit none
+  type(dot) :: dad, mom
+  type(point) :: me
+  type(something_else) :: alien
+
+   write(*,*)same_type_as(me,dad),'I am descended from Dad, but equal?'
+   write(*,*)same_type_as(me,me) ,'I am what I am'
+   write(*,*)same_type_as(dad,mom) ,'what a pair!'
+
+   write(*,*)same_type_as(dad,me),'no paradox here'
+   write(*,*)same_type_as(dad,alien),'no relation'
+
+   call pointers()
+   contains
+   subroutine pointers()
+   ! Given the declarations and assignments
+   type t1
+      real c
+   end type
+   type, extends(t1) :: t2
+   end type
+   class(t1), pointer :: p, q, r
+      allocate (p, q)
+      allocate (t2 :: r)
+      ! the result of SAME_TYPE_AS (P, Q) will be true, and the result
+      ! of SAME_TYPE_AS (P, R) will be false.
+      write(*,*)'(P,Q)',same_type_as(p,q),"mind your P's and Q's"
+      write(*,*)'(P,R)',same_type_as(p,r)
+   end subroutine pointers
+
+  end program demo_same_type_as
+
+
+

Results:

+
    F I am descended from Dad, but equal?
+    T I am what I am
+    T what a pair!
+    F no paradox here
+    F no relation
+    (P,Q) T mind your P's and Q's
+    (P,R) F
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

extends_type_of(3)

+

fortran-lang intrinsic descriptions

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/system/index.html b/learn/intrinsics/system/index.html new file mode 100644 index 000000000000..e2a2a26d01d7 --- /dev/null +++ b/learn/intrinsics/system/index.html @@ -0,0 +1,2410 @@ + + + + + + + + + Accessing external system information — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Accessing external system information#

+
+

command_argument_count#

+
+

Name#

+

command_argument_count(3) - [SYSTEM:COMMAND LINE] Get number of command line arguments

+
+
+

Synopsis#

+
    result = command_argument_count()
+
+
+
     integer function command_argument_count()
+
+
+
+
+

Characteristics#

+
    +
  • the result is of default integer scalar.

  • +
+
+
+

Description#

+

command_argument_count(3) returns the number of arguments passed +on the command line when the containing program was invoked.

+
+
+

Options#

+

None

+
+
+

Result#

+

: The return value is of type default integer. It is the number of +arguments passed on the command line when the program was invoked.

+

If there are no command arguments available or if the processor does +not support command arguments, then the result has the value zero.

+

If the processor has a concept of a command name, the command name +does not count as one of the command arguments.

+
+
+

Examples#

+

Sample program:

+
program demo_command_argument_count
+implicit none
+integer :: count
+   count = command_argument_count()
+   print *, count
+end program demo_command_argument_count
+
+
+

Sample output:

+
   # the command verb does not count
+   ./test_command_argument_count
+       0
+   # quoted strings may count as one argument
+   ./test_command_argument_count count arguments
+       2
+   ./test_command_argument_count 'count arguments'
+       1
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

get_command(3), +get_command_argument(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

get_command#

+
+

Name#

+

get_command(3) - [SYSTEM:COMMAND LINE] Get the entire command line invocation

+
+
+

Synopsis#

+
    call get_command([command] [,length] [,status] [,errmsg])
+
+
+
     subroutine get_command( command ,length ,status, errmsg )
+
+      character(len=*),intent(out),optional   :: command
+      integer(kind=**),intent(out),optional   :: length
+      integer(kind=**),intent(out),optional   :: status
+      character(len=*),intent(inout),optional :: errmsg
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type +meeting the conditions described herein.

  • +
  • command and errmsg are scalar character variables of default kind.

  • +
  • length and status are scalar integer with a decimal exponent +range of at least four.

  • +
+
+
+

Description#

+

get_command(3) retrieves the entire command line that was used to +invoke the program.

+

Note that what is typed on the command line is often processed by +a shell. The shell typically processes special characters and white +space before passing it to the program. The processing can typically be +turned off by turning off globbing or quoting the command line arguments +and/or changing the default field separators, but this should rarely +be necessary.

+
+
+

Result#

+
    +
  • +
    command

    If command is present, the entire command line that was used +to invoke the program is stored into it. If the command cannot be +determined, command is assigned all blanks.

    +
    +
    +
  • +
  • +
    length

    If length is present, it is assigned the length of the command line. +It is system-dependent as to whether trailing blanks will be counted.

    +
    +

    If the command length cannot be determined, a length of 0 is assigned.

    +
    +
    +
  • +
  • +
    status

    If status is present, it is assigned 0 upon success of the +command, -1 if command is too short to store the command line, +or a positive value in case of an error.

    +
    +
    +
  • +
  • +
    errmsg

    It is assigned a processor-dependent explanatory message if the +command retrieval fails. Otherwise, it is unchanged.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_get_command
+implicit none
+integer                      :: command_line_length
+character(len=:),allocatable :: command_line
+   ! get command line length
+   call get_command(length=command_line_length)
+   ! allocate string big enough to hold command line
+   allocate(character(len=command_line_length) :: command_line)
+   ! get command line as a string
+   call get_command(command=command_line)
+   ! trim leading spaces just in case
+   command_line=adjustl(command_line)
+   write(*,'("OUTPUT:",a)')command_line
+end program demo_get_command
+
+
+

Results:

+
     # note that shell expansion removes some of the whitespace
+     # without quotes
+     ./test_get_command  arguments    on command   line to   echo
+
+     OUTPUT:./test_get_command arguments on command line to echo
+
+     # using the bash shell with single quotes
+     ./test_get_command  'arguments  *><`~[]!{}?"\'| '
+
+     OUTPUT:./test_get_command arguments  *><`~[]!{}?"'|
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

get_command_argument(3), +command_argument_count(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

#

+
+

get_command_argument#

+
+

Name#

+

get_command_argument(3) - [SYSTEM:COMMAND LINE] Get command line arguments

+
+
+

Synopsis#

+
  call get_command_argument(number [,value] [,length] &
+  & [,status] [,errmsg])
+
+
+
   subroutine get_command_argument( number, value, length, &
+   & status ,errmsg)
+
+    integer(kind=**),intent(in)             :: number
+    character(len=*),intent(out),optional   :: value
+    integer(kind=**),intent(out),optional   :: length
+    integer(kind=**),intent(out),optional   :: status
+    character(len=*),intent(inout),optional :: errmsg
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type +meeting the conditions described herein.

  • +
  • number, length, and status are scalar integer +with a decimal exponent range of at least four.

  • +
  • value and errmsg are scalar character variables of default +kind.

  • +
+
+
+

Description#

+

get_command_argument(3) retrieves or queries the n-th argument that +was passed on the command line to the current program execution.

+

There is not anything specifically stated about what an argument is but +in practice the arguments are strings split on whitespace unless the +arguments are quoted. IFS values (Internal Field Separators) used by +common shells are typically ignored and unquoted whitespace is almost +always the separator.

+

Shells have often expanded command arguments and spell characters before +passing them to the program, so the strings read are often not exactly +what the user typed on the command line.

+
+
+

Options#

+
    +
  • +
    number

    is a non-negative number indicating which argument of the current +program command line is to be retrieved or queried.

    +
    +

    If number = 0, the argument pointed to is set to the name of the +program (on systems that support this feature).

    +
    +

    if the processor does not have such a concept as a command name the +value of command argument 0 is processor dependent.

    +
    +

    For values from 1 to the number of arguments passed to the program a +value is returned in an order determined by the processor. Conventionally +they are returned consecutively as they appear on the command line from +left to right.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  • +
    value

    The value argument holds the command line argument. +If value can not hold the argument, it is truncated to fit the +length of value.

    +
    +

    If there are less than number arguments specified at the command +line or if the argument specified does not exist for other reasons, +value will be filled with blanks.

    +
    +
    +
  • +
  • +
    length

    The length argument contains the length of the n-th command +line argument. The length of value has no effect on this value, +It is the length required to hold all the significant characters of +the argument regardless of how much storage is provided by value.

    +
    +
    +
  • +
  • +
    status

    If the argument retrieval fails, status is a positive number; +if value contains a truncated command line argument, status +is -1; and otherwise the status is zero.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_get_command_argument
+implicit none
+character(len=255)           :: progname
+integer                      :: count, i, argument_length, istat
+character(len=:),allocatable :: arg
+
+ ! command name assuming it is less than 255 characters in length
+  call get_command_argument (0, progname, status=istat)
+  if (istat == 0) then
+     print *, "The program's name is " // trim (progname)
+  else
+     print *, "Could not get the program's name " // trim (progname)
+  endif
+
+ ! get number of arguments
+  count = command_argument_count()
+  write(*,*)'The number of arguments is ',count
+
+  !
+  ! allocate string array big enough to hold command line
+  ! argument strings and related information
+  !
+  do i=1,count
+     call get_command_argument(number=i,length=argument_length)
+     if(allocated(arg))deallocate(arg)
+     allocate(character(len=argument_length) :: arg)
+     call get_command_argument(i, arg,status=istat)
+     ! show the results
+     write (*,'(i3.3,1x,i0.5,1x,i0.5,1x,"[",a,"]")') &
+     & i,istat,argument_length,arg
+  enddo
+
+end program demo_get_command_argument
+
+
+

Results:

+
 ./demo_get_command_argument a  test 'of getting  arguments ' " leading"
+
+
+
 The program's name is ./demo_get_command_argument
+ The number of arguments is            4
+001 00000 00001 [a]
+002 00000 00004 [test]
+003 00000 00022 [of getting  arguments ]
+004 00000 00008 [ leading]
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See Also#

+

get_command(3), +command_argument_count(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

#

+
+

cpu_time#

+
+

Name#

+

cpu_time(3) - [SYSTEM:TIME] Return CPU processor time used in seconds

+
+
+

Synopsis#

+
     call cpu_time(time)
+
+
+
      subroutine cpu_time(time)
+
+       real,intent(out) :: time
+
+
+
+
+

Characteristics#

+
    +
  • time is a real of any kind

  • +
+
+
+

Description#

+

cpu_time(3) returns a real value representing the elapsed CPU time +in seconds. This is useful for testing segments of code to determine +execution time.

+

If no time source is available, time is set to a negative value.

+

The exact definition of time is left imprecise because of the variability +in what different processors are able to provide.

+

Note that time may contain a system dependent, arbitrary offset and may +not start with 0.0. For cpu_time(3) the absolute value is meaningless. +Only differences between subsequent calls, as shown in the example below, +should be used.

+

PARALLEL PROCESSING

+

Whether the value assigned is an approximation to the amount of time used +by the invoking image, or the amount of time used by the whole program, +is processor dependent.

+

A processor for which a single result is inadequate (for example, a +parallel processor) might choose to provide an additional version for +which time is an array.

+
+
+

Result#

+
    +
  • +
    time

    is assigned a processor-dependent approximation to the processor +time in seconds. If the processor cannot return a meaningful time, +a processor-dependent negative value is returned.

    +
    +

    The start time is left imprecise because the purpose is to time +sections of code, as in the example. This might or might not +include system overhead time.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_cpu_time
+use, intrinsic :: iso_fortran_env, only : real_kinds,real32,real64,real128
+implicit none
+real :: start, finish
+real(kind=real64) :: startd, finishd
+   !
+   call cpu_time(start)
+   call cpu_time(startd)
+   ! put code to time here
+   call cpu_time(finish)
+   call cpu_time(finishd)
+   !
+  ! writes processor time taken by the piece of code.
+
+  ! the accuracy of the clock and whether it includes system time
+  ! as well as user time is processor dependent. Accuracy up to
+  ! milliseconds is common but not guaranteed, and may be much
+  ! higher or lower
+   print '("Processor Time = ",f6.3," seconds.")',finish-start
+
+   ! see your specific compiler documentation for how to measure
+   ! parallel jobs and for the precision of the time returned
+   print '("Processor Time = ",g0," seconds.")',finish-start
+   print '("Processor Time = ",g0," seconds.")',finishd-startd
+end program demo_cpu_time
+
+
+

Results:

+

The precision of the result, some aspects of what is returned, +and what if any options there are for parallel applications +may very from system to system. See compiler-specific for details.

+
   Processor Time =  0.000 seconds.
+   Processor Time = .4000030E-05 seconds.
+   Processor Time = .2000000000000265E-05 seconds.
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

system_clock(3), +date_and_time(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

date_and_time#

+
+

Name#

+

date_and_time(3) - [SYSTEM:TIME] Gets current date time

+
+
+

Synopsis#

+
    call date_and_time( [date] [,time] [,zone] [,values] )
+
+
+
     subroutine date_and_time(date, time, zone, values)
+
+      character(len=8),intent(out),optional :: date
+      character(len=10),intent(out),optional :: time
+      character(len=5),intent(out),optional :: zone
+      integer,intent(out),optional :: values(8)
+
+
+
+
+

Characteristics#

+
    +
  • *date is a default character scalar

  • +
  • *time is a default character scalar

  • +
  • *zone is a default character scalar

  • +
  • values is a rank-one array of type integer with a decimal +exponent range of at least four.

  • +
+
+
+

Description#

+

date_and_time(3) gets the corresponding date and time information +from the real-time system clock.

+

Unavailable time and date character parameters return blanks.

+

Unavailable numeric parameters return -huge(value).

+

These forms are compatible with the representations defined in ISO +8601:2004. UTC is established by the International Bureau of Weights +and Measures (BIPM, i.e. Bureau International des Poids et Mesures) +and the International Earth Rotation Service (IERS).

+
+
+

Options#

+
    +
  • +
    date

    A character string of default kind of the form CCYYMMDD, of length +8 or larger, where

    +
      +
    • CCYY is the year in the Gregorian calendar

    • +
    • MM is the month within the year

    • +
    • DD is the day within the month.

    • +
    +
    +
    +

    The characters of this value are all decimal digits.

    +

    If there is no date available, DATE is assigned all blanks.

    +
  • +
  • +
    time

    A character string of default kind of the form HHMMSS.SSS, of length +10 or larger, where

    +
    +
    +
      +
    • hh is the hour of the day,

    • +
    • mm is the minutes of the hour,

    • +
    • and ss.sss is the seconds and milliseconds of the minute.

    • +
    +

    Except for the decimal point, the characters of this value shall +all be decimal digits.

    +

    If there is no clock available, TIME is assigned all blanks.

    +
  • +
  • +
    zone

    A string of the form (+-)HHMM, of length 5 or larger, representing +the difference with respect to Coordinated Universal Time (UTC), where

    +
    +
    +
      +
    • hh and mm are the time difference with respect to Coordinated +Universal Time (UTC) in hours and minutes, respectively.

    • +
    +

    The characters of this value following the sign character are +all decimal digits.

    +

    If this information is not available, ZONE is assigned all blanks.

    +
  • +
  • +
    values

    An array of at least eight elements. If there is no data +available for a value it is set to -huge(values). Otherwise, +it contains:

    +
    +
    +
      +
    • values(1) : The year, including the century.

    • +
    • values(2) : The month of the year

    • +
    • values(3) : The day of the month

    • +
    • values(4) : Time difference in minutes between the reported time +and UTC time.

    • +
    • values(5) : The hour of the day, in the range 0 to 23.

    • +
    • values(6) : The minutes of the hour, in the range 0 to 59

    • +
    • values(7) : The seconds of the minute, in the range 0 to 60

    • +
    • values(8) : The milliseconds of the second, in the range 0 to 999.

    • +
    +
  • +
+

The date, clock, and time zone information might be available on some +images and not others. If the date, clock, or time zone information is +available on more than one image, it is processor dependent whether or +not those images share the same information.

+
+
+

Examples#

+

Sample program:

+
program demo_date_and_time
+implicit none
+character(len=8)     :: date
+character(len=10)    :: time
+character(len=5)     :: zone
+integer,dimension(8) :: values
+
+    call date_and_time(date,time,zone,values)
+
+    ! using keyword arguments
+    call date_and_time(DATE=date,TIME=time,ZONE=zone)
+    print '(*(g0))','DATE="',date,'" TIME="',time,'" ZONE="',zone,'"'
+
+    call date_and_time(VALUES=values)
+    write(*,'(i5,a)') &
+     & values(1),' - The year', &
+     & values(2),' - The month', &
+     & values(3),' - The day of the month', &
+     & values(4),' - Time difference with UTC in minutes', &
+     & values(5),' - The hour of the day', &
+     & values(6),' - The minutes of the hour', &
+     & values(7),' - The seconds of the minute', &
+     & values(8),' - The milliseconds of the second'
+end program demo_date_and_time
+
+
+

Results:

+
 > DATE="20201222" TIME="165738.779" ZONE="-0500"
+ >  2020 - The year
+ >    12 - The month
+ >    22 - The day of the month
+ >  -300 - Time difference with UTC in minutes
+ >    16 - The hour of the day
+ >    57 - The minutes of the hour
+ >    38 - The seconds of the minute
+ >   779 - The milliseconds of the second
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

cpu_time(3), +system_clock(3)

+
+
+

Resources#

+

date and time conversion, formatting and computation

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

system_clock#

+
+

Name#

+

system_clock(3) - [SYSTEM:TIME] Query system clock

+
+
+

Synopsis#

+
    call system_clock([count] [,count_rate] [,count_max] )
+
+
+
     subroutine system_clock(count, count_rate, count_max)
+
+      integer(kind=**),intent(out),optional   :: count
+      type(TYPE(kind=**),intent(out),optional :: count_rate
+      integer(kind=**),intent(out),optional   :: count_max
+
+
+
+
+

Characteristics#

+
    +
  • count is an integer scalar

  • +
  • count_rate is an integer or real scalar

  • +
  • count_max is an integer scalar

  • +
+
+
+

Description#

+

system_clock(3) lets you measure durations of time with the +precision of the smallest time increment generally available on a +system by returning processor-dependent values based on the current +value of the processor clock.

+

system_clock is typically used to measure short time intervals +(system clocks may be 24-hour clocks or measure processor clock ticks +since boot, for example). It is most often used for measuring or +tracking the time spent in code blocks in lieu of using profiling tools.

+

count_rate and count_max are assumed constant (even though +CPU rates can vary on a single platform).

+

Whether an image has no clock, has a single clock of its own, or shares +a clock with another image, is processor dependent.

+

If there is no clock, or querying the clock fails, count is set to +-huge(count), and count_rate and count_max are set to zero.

+

The accuracy of the measurements may depend on the kind of the +arguments!

+

Timing-related procedures are obviously processor and system-dependent. +More specific information may generally be found in compiler-specific +documentation.

+
+
+

Options#

+
    +
  • count +If there is no clock, the returned value for count is the negative +value -huge(count).

    +

    Otherwise, the clock value is incremented by one for each clock +count until the value count_max is reached and is then reset to +zero at the next count. clock therefore is a modulo value that +lies in the range 0 to count_max.

    +
  • +
  • +
    count_rate

    is assigned a processor-dependent approximation to the number of +processor clock counts per second, or zero if there is no clock. +count_rate is system dependent and can vary depending on the kind +of the arguments. Generally, a large real may generate a more precise +interval.

    +
    +
    +
  • +
  • +
    count_max

    is assigned the maximum value that COUNT can have, or zero if +there is no clock.

    +
    +
    +
  • +
+
+
+

Examples#

+

If the processor clock is a 24-hour clock that registers time at +approximately 18.20648193 ticks per second, at 11:30 A.M. the reference

+
      call system_clock (count = c, count_rate = r, count_max = m)
+
+
+

defines

+
      C = (11*3600+30*60)*18.20648193 = 753748,
+      R = 18.20648193, and
+      M = 24*3600*18.20648193-1 = 1573039.
+
+
+

Sample program:

+
program demo_system_clock
+use, intrinsic :: iso_fortran_env, only: wp => real64, int32, int64
+implicit none
+character(len=*), parameter :: g = '(1x,*(g0,1x))'
+
+integer(kind=int64) :: count64, count_rate64, count_max64
+integer(kind=int64) :: start64, finish64
+
+integer(kind=int32) :: count32, count_rate32, count_max32
+integer(kind=int32) :: start32, finish32
+
+real(kind=wp)       :: time_read
+real(kind=wp)       :: sum
+integer             :: i
+
+   print g, 'accuracy may vary with argument type!'
+
+   print g, 'query all arguments'
+
+   call system_clock(count64, count_rate64, count_max64)
+   print g, 'COUNT_MAX(64bit)=', count_max64
+   print g, 'COUNT_RATE(64bit)=', count_rate64
+   print g, 'CURRENT COUNT(64bit)=', count64
+
+   call system_clock(count32, count_rate32, count_max32)
+   print g, 'COUNT_MAX(32bit)=', count_max32
+   print g, 'COUNT_RATE(32bit)=', count_rate32
+   print g, 'CURRENT COUNT(32bit)=', count32
+
+   print g, 'time some computation'
+   call system_clock(start64)
+
+   ! some code to time
+   sum = 0.0_wp
+   do i = -0, huge(0) - 1
+      sum = sum + sqrt(real(i))
+   end do
+   print g, 'SUM=', sum
+
+   call system_clock(finish64)
+
+   time_read = (finish64 - start64)/real(count_rate64, wp)
+   write (*, '(1x,a,1x,g0,1x,a)') 'time : ', time_read, ' seconds'
+
+end program demo_system_clock
+
+
+

Results:

+
 >  accuracy may vary with argument type!
+ >  query all arguments
+ >  COUNT_MAX(64bit)= 9223372036854775807
+ >  COUNT_RATE(64bit)= 1000000000
+ >  CURRENT COUNT(64bit)= 1105422387865806
+ >  COUNT_MAX(32bit)= 2147483647
+ >  COUNT_RATE(32bit)= 1000
+ >  CURRENT COUNT(32bit)= 1105422387
+ >  time some computation
+ >  SUM= 66344288183024.266
+ >  time :  6.1341038460000004  seconds
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

date_and_time(3), +cpu_time(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

execute_command_line#

+
+

Name#

+

execute_command_line(3) - [SYSTEM:PROCESSES] Execute a shell command

+
+
+

Synopsis#

+
    call execute_command_line( &
+    & command [,wait] [,exitstat] [,cmdstat] [,cmdmsg] )
+
+
+
     subroutine execute_command_line(command,wait,exitstat,cmdstat,cmdmsg)
+
+      character(len=*),intent(in)             :: command
+      logical,intent(in),optional             :: wait
+      integer,intent(inout),optional          :: exitstat
+      integer,intent(inout),optional          :: cmdstat
+      character(len=*),intent(inout),optional :: cmdmsg
+
+
+
+
+

Characteristics#

+
    +
  • command is a default character scalar

  • +
  • wait is a default logical scalar. If wait is present with the

  • +
  • exitstat is an integer of the default kind. +It must be of a kind with at least a decimal exponent range of 9.

  • +
  • cmdstat is an integer of default kind +The kind of the variable must support at least a decimal exponent range of four.

  • +
  • cmdmsg is a character scalar of the default kind.

  • +
+
+
+

Description#

+

For execute_command_line(3) the command argument is passed +to the shell and executed. (The shell is generally sh(1) on Unix +systems, and cmd.exe on Windows.) If wait is present and has the +value .false., the execution of the command is asynchronous if the +system supports it; otherwise, the command is executed synchronously.

+

The three last arguments allow the user to get status information. After +synchronous execution, exitstat contains the integer exit code of +the command, as returned by system. cmdstat is set to zero if +the command line was executed (whatever its exit status was). cmdmsg +is assigned an error message if an error has occurred.

+

Note that the system call need not be thread-safe. It is the +responsibility of the user to ensure that the system is not called +concurrently if required.

+

When the command is executed synchronously, execute_command_line +returns after the command line has completed execution. Otherwise, +execute_command_line returns without waiting.

+

Because this intrinsic is making a system call, it is very system +dependent. Its behavior with respect to signaling is processor +dependent. In particular, on POSIX-compliant systems, the SIGINT and +SIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As +such, if the parent process is terminated, the child process might +not be terminated alongside.

+
+
+

Options#

+
    +
  • +
    command

    the command line to be executed. The interpretation is +programming-environment dependent.

    +
    +
    +
  • +
  • +
    wait

    If wait is present with the +value .false., and the processor supports asynchronous execution of +the command, the command is executed asynchronously; otherwise it is +executed synchronously.

    +
    +
    +

    When the command is executed synchronously, execute_command_line(3) +returns after the command line has completed execution. Otherwise, +execute_command_line(3) returns without waiting.

    +
  • +
  • +
    exitstat

    If the command is executed synchronously, it is assigned the value +of the processor-dependent exit status. Otherwise, the value of +exitstat is unchanged.

    +
    +
    +
  • +
  • +
    cmdstat

    If an error condition occurs and cmdstat is not present, error +termination of execution of the image is initiated.

    +
    +
    +

    It is assigned the value -1 if the processor does not support +command line execution, a processor-dependent positive value if an +error condition occurs, or the value -2 if no error condition +occurs but wait is present with the value false and the processor +does not support asynchronous execution. Otherwise it is assigned +the value 0.

    +
  • +
  • +
    cmdmsg

    If an error condition occurs, it is assigned a processor-dependent +explanatory message. Otherwise, it is unchanged.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_exec
+implicit none
+   integer :: i
+
+   call execute_command_line("external_prog.exe", exitstat=i)
+   print *, "Exit status of external_prog.exe was ", i
+
+   call execute_command_line("reindex_files.exe", wait=.false.)
+   print *, "Now reindexing files in the background"
+end program demo_exec
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+

get_environment_variable(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

get_environment_variable#

+
+

Name#

+

get_environment_variable(3) - [SYSTEM:ENVIRONMENT] Get value of an environment variable

+
+
+

Synopsis#

+
    call get_environment_variable(name [,value] [,length] &
+    & [,status] [,trim_name] [,errmsg] )
+
+
+
     subroutine character(len=*) get_environment_variable( &
+     & name, value, length, status, trim_name, errmsg )
+
+      character(len=*),intent(in) :: name
+      character(len=*),intent(out),optional   :: value
+      integer(kind=**),intent(out),optional   :: length
+      integer(kind=**),intent(out),optional   :: status
+      logical,intent(out),optional            :: trim_name
+      character(len=*),intent(inout),optional :: errmsg
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type +meeting the conditions described herein.

  • +
  • name, value, and errmsg are a scalar character of +default kind.

  • +
  • length and status are integer scalars with a decimal exponent +range of at least four.

  • +
  • trim_name is a scalar of type logical and of default kind.

  • +
+
+
+

Description#

+

get_environment_variable(3) gets the value of the environment +variable name.

+

Note that get_environment_variable(3) need not be thread-safe. It +is the responsibility of the user to ensure that the environment is not +being updated concurrently.

+

If running in parallel be aware +It is processor dependent whether an environment variable that exists +on an image also exists on another image, and if it does exist on both +images whether the values are the same or different.

+
+
+

Options#

+
    +
  • +
    name

    The name of the environment variable to query. +The interpretation of case is processor dependent.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  • +
    value

    The value of the environment variable being queried. If value +is not large enough to hold the data, it is truncated. If the variable +name is not set or has no value, or the processor does not support +environment variables value will be filled with blanks.

    +
    +
    +
  • +
  • +
    length

    Argument length contains the length needed for storing the +environment variable name. It is zero if the environment variable +is not set.

    +
    +
    +
  • +
  • +
    status

    status is -1 if value is present but too short for the +environment variable; it is 1 if the environment variable does +not exist and 2 if the processor does not support environment +variables; in all other cases status is zero.

    +
    +
    +
  • +
  • +
    trim_name

    If trim_name is present with the value .false., the trailing +blanks in name are significant; otherwise they are not part of +the environment variable name.

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_getenv
+implicit none
+character(len=:),allocatable :: homedir
+character(len=:),allocatable :: var
+
+     var='HOME'
+     homedir=get_env(var)
+     write (*,'(a,"=""",a,"""")')var,homedir
+
+contains
+
+function get_env(name,default) result(value)
+! a function that makes calling get_environment_variable(3) simple
+implicit none
+character(len=*),intent(in)          :: name
+character(len=*),intent(in),optional :: default
+character(len=:),allocatable         :: value
+integer                              :: howbig
+integer                              :: stat
+integer                              :: length
+   length=0
+   value=''
+   if(name.ne.'')then
+      call get_environment_variable( name, &
+      & length=howbig,status=stat,trim_name=.true.)
+      select case (stat)
+      case (1)
+       print *, name, " is not defined in the environment. Strange..."
+       value=''
+      case (2)
+       print *, &
+       "This processor does not support environment variables. Boooh!"
+       value=''
+      case default
+       ! make string of sufficient size to hold value
+       if(allocated(value))deallocate(value)
+       allocate(character(len=max(howbig,1)) :: value)
+       ! get value
+       call get_environment_variable( &
+       & name,value,status=stat,trim_name=.true.)
+       if(stat.ne.0)value=''
+      end select
+   endif
+   if(value.eq.''.and.present(default))value=default
+end function get_env
+
+end program demo_getenv
+
+
+

Typical Results:

+
   HOME="/home/urbanjs"
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See also#

+

get_command_argument(3), +get_command(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+
+

#

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/transform/index.html b/learn/intrinsics/transform/index.html new file mode 100644 index 000000000000..bc52e6f1fa20 --- /dev/null +++ b/learn/intrinsics/transform/index.html @@ -0,0 +1,2440 @@ + + + + + + + + + Matrix multiplication, dot product, and array shifts — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Matrix multiplication, dot product, and array shifts#

+
+

cshift#

+
+

Name#

+

cshift(3) - [TRANSFORMATIONAL] Circular shift elements of an array

+
+
+

Synopsis#

+
   result = cshift(array, shift [,dim])
+
+
+
    type(TYPE, kind=KIND) function cshift(array, shift, dim )
+
+     type(TYPE,kind=KIND),intent(in) :: array(..)
+     integer(kind=**),intent(in)  :: shift
+     integer(kind=**),intent(in)  :: dim
+
+
+
+
+

Characteristics#

+
    +
  • array may be any type and rank

  • +
  • shift an integer scalar if array has rank one. +Otherwise, it shall be scalar or of rank n-1 and of shape [d1, d2, +…, dDIM-1, dDIM+1, …, dn] where [d1, d2, …, dn] is the shape +of array.

  • +
  • dim is an integer scalar with a value in the range 1 <= dim +<= n, where n is the rank of array. +If dim is absent, it is as if it were present with the value 1.

  • +
  • the result will automatically be of the same type, kind and shape as array.

  • +
+

NOTE: +:a kind designated as ** may be any supported kind for the type

+
+
+

Description#

+

cshift(3) performs a circular shift on elements +of array along the dimension of dim. If dim is omitted it is +taken to be 1. dim is a scalar of type integer in the range of +1 <= dim <= n, where “n” is the rank of array.

+

If the rank of +array is one, then all elements of array are shifted by shift +places. If rank is greater than one, then all complete rank one sections +of array along the given dimension are shifted. Elements shifted +out one end of each rank one section are shifted back in the other end.

+
+
+

Options#

+
    +
  • +
    array

    An array of any type which is to be shifted

    +
    +
    +
  • +
  • +
    shift

    the number of positions to circularly shift. A negative value produces +a right shift, a positive value produces a left shift.

    +
    +
    +
  • +
  • +
    dim

    the dimension along which to shift a multi-rank array. Defaults +to 1.

    +
    +
    +
  • +
+
+
+

Result#

+

Returns an array of same type and rank as the array argument.

+

The rows of an array of rank two may all be shifted by the same amount +or by different amounts.

+
+
+
+

cshift#

+
+

Examples#

+

Sample program:

+
program demo_cshift
+implicit none
+integer, dimension(5)   :: i1,i2,i3
+integer, dimension(3,4) :: a, b
+   !basics
+    i1=[10,20,30,40,50]
+    print *,'start with:'
+    print '(1x,5i3)', i1
+    print *,'shift -2'
+    print '(1x,5i3)', cshift(i1,-2)
+    print *,'shift +2'
+    print '(1x,5i3)', cshift(i1,+2)
+
+    print *,'start with a matrix'
+    a = reshape( [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ], [ 3, 4 ])
+    print '(4i3)', a(1,:)
+    print '(4i3)', a(2,:)
+    print '(4i3)', a(3,:)
+    print *,'matrix shifted along rows, each by its own amount [-1,0,1]'
+    b = cshift(a, SHIFT=[1, 0, -1], DIM=2)
+    print *
+    print '(4i3)', b(1,:)
+    print '(4i3)', b(2,:)
+    print '(4i3)', b(3,:)
+end program demo_cshift
+
+
+

Results:

+
 >  start with:
+ >   10 20 30 40 50
+ >  shift -2
+ >   40 50 10 20 30
+ >  shift +2
+ >   30 40 50 10 20
+ >  start with a matrix
+ >   1  4  7 10
+ >   2  5  8 11
+ >   3  6  9 12
+ >  matrix shifted along rows, each by its own amount
+ >
+ >   4  7 10  1
+ >   2  5  8 11
+ >  12  3  6  9
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+
    +
  • eoshift(3) - End-off shift elements of an array

  • +
+ +
    +
  • sum(3) - sum the elements of an array

  • +
  • product(3) - Product of array elements

  • +
  • findloc(3) - Location of first element of ARRAY identified by MASK along dimension DIM having a value

  • +
  • maxloc(3) - Location of the maximum value within an array

  • +
+

fortran-lang intrinsic descriptions

+
+
+
+

dot_product#

+
+

Name#

+

dot_product(3) - [TRANSFORMATIONAL] Dot product of two vectors

+
+
+

Synopsis#

+
    result = dot_product(vector_a, vector_b)
+
+
+
     TYPE(kind=KIND) function dot_product(vector_a, vector_b)
+
+      TYPE(kind=KIND),intent(in) :: vector_a(:)
+      TYPE(kind=KIND),intent(in) :: vector_b(:)
+
+
+
+
+

Characteristics#

+
    +
  • vector_a, vector_b may be any numeric or logical type array +of rank one of the same size

  • +
  • the two vectors need not be of the same kind, but both must be logical +or numeric for any given call.

  • +
  • the result is the same type and kind of the vector that is the higher +type that the other vector is optionally promoted to if they differ.

  • +
+

The two vectors may be either numeric or logical and must be arrays +of rank one and of equal size.

+
+
+

Description#

+

dot_product(3) computes the dot product +multiplication of two vectors vector_a and vector_b.

+
+
+

Options#

+
    +
  • +
    vector_a

    A rank 1 vector of values

    +
    +
    +
  • +
  • +
    vector_b

    The type shall be numeric if vector_a is of numeric type +or logical if vectora is of type _logical. vector_b shall be a +rank-one array of the same size as vector_a.

    +
    +
    +
  • +
+
+
+

Result#

+

If the arguments are numeric, the return value is a scalar of numeric +type. If the arguments are logical, the +return value is .true. or .false..

+

If the vectors are integer or real, the result is

+
     sum(vector_a*vector_b)
+
+
+

If the vectors are complex, the result is

+
     sum(conjg(vector_a)*vector_b)**
+
+
+

If the vectors are logical, the result is

+
     any(vector_a .and. vector_b)
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_dot_prod
+implicit none
+    integer, dimension(3) :: a, b
+    a = [ 1, 2, 3 ]
+    b = [ 4, 5, 6 ]
+    print '(3i3)', a
+    print *
+    print '(3i3)', b
+    print *
+    print *, dot_product(a,b)
+end program demo_dot_prod
+
+
+

Results:

+
  >  1  2  3
+  >
+  >  4  5  6
+  >
+  >           32
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

sum(3), +conjg(3), +any(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

eoshift#

+
+

Name#

+

eoshift(3) - [TRANSFORMATIONAL] End-off shift of elements of an array

+
+
+

Synopsis#

+
  result = eoshift( array, shift [,boundary] [,dim] )
+
+
+
   type(TYPE(kind=KIND)) function eoshift(array,shift,boundary,dim)
+
+    type(TYPE(kind=KIND)),intent(in) :: array(..)
+    integer(kind=**),intent(in)      :: shift(..)
+    type(TYPE(kind=KIND)),intent(in) :: boundary(..)
+    integer(kind=**),intent(in)      :: dim
+
+
+
+
+

Characteristics#

+
    +
  • array an array of any type

  • +
  • shift is an integer of any kind. It may be a scalar. +If the rank of array is greater than one, and dim is +specified it is the same shape as array reduced by removing +dimension dim.

  • +
  • boundary May be a scalar of the same type and kind as array. +It must be a scalar when array has a rank of one. Otherwise, it +may be an array of the same shape as array reduced by dimension +dim. It may only be absent for certain types, as described below.

  • +
  • dim is an integer of any kind. It defaults to one.

  • +
  • the result has the same type, type parameters, and shape as array.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
  • The result is an array of same type, kind and rank as the array +argument.

  • +
+
+
+

Description#

+

eoshift(3) performs an end-off shift on elements of array +along the dimension of dim.

+

Elements shifted out one end of each rank one section are dropped.

+

If boundary is present then the corresponding value from +boundary is copied back in the other end, else default values +are used.

+
+
+

Options#

+
    +
  • +
    array

    array of any type whose elements are to be shifted. +If the rank of array is one, then all elements of array are +shifted by shift places. If rank is greater than one, then all +complete rank one sections of array along the given dimension +are shifted.

    +
    +
    +
  • +
  • +
    shift

    the number of elements to shift. A negative value shifts to the +right, a positive value to the left of the vector(s) being shifted.

    +
    +
    +
  • +
  • +
    boundary

    the value to use to fill in the elements vacated by the shift. +If boundary is not present then the following are copied in +depending on the type of array.

    +
    +
    +
  • +
+
    Array Type    | Boundary Value
+    -----------------------------------------------------
+    Numeric       | 0, 0.0, or (0.0, 0.0) of the type and kind of "array"
+    Logical       | .false.
+    Character(len)|  LEN blanks
+
+
+

These are the only types for which boundary may not be present. +For these types the kind is converted as neccessary to the kind of +array.

+
    +
  • +
    dim

    dim is in the range of

    +
    +
    +
  • +
+
    1 <= DIM <= n
+
+
+

where “n” is the rank of array. If dim is omitted it +is taken to be 1.

+
+
+

Result#

+

Returns an array of the same characteristics as the input with the +specified number of elements dropped off along the specified direction +indicated, backfilling the vacated elements with a value indicated by +the boundary value.

+
+
+

Examples#

+

Sample program:

+
program demo_eoshift
+implicit none
+integer, dimension(3,3) :: a
+integer :: i
+
+    a = reshape( [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], [ 3, 3 ])
+    print '(3i3)', (a(i,:),i=1,3)
+
+    print *
+
+    ! shift it
+    a = eoshift(a, SHIFT=[1, 2, 1], BOUNDARY=-5, DIM=2)
+    print '(3i3)', (a(i,:),i=1,3)
+
+end program demo_eoshift
+
+
+

Results:

+
  >  1  4  7
+  >  2  5  8
+  >  3  6  9
+  >
+  >  4  7 -5
+  >  8 -5 -5
+  >  6  9 -5
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

dshiftr(3), +dshiftl(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

matmul#

+
+

Name#

+

matmul(3) - [TRANSFORMATIONAL] Numeric or logical matrix +multiplication

+
+
+

Synopsis#

+
    result = matmul(matrix_a,matrix_b)
+
+
+
     function matmul(matrix_a, matrix_b)
+
+      type(TYPE1(kind=**)       :: matrix_a(..)
+      type(TYPE2(kind=**)       :: matrix_b(..)
+      type(TYPE(kind=PROMOTED)) :: matmul(..)
+
+
+
+
+

Characteristics#

+
    +
  • matrix_a is a numeric (integer, real, or complex ) or +logical array of rank one two.

  • +
  • matrix_b is a numeric (integer, real, or complex ) or +logical array of rank one two.

  • +
  • At least one argument must be rank two.

  • +
  • the size of the first dimension of matrix_b must equal the size +of the last dimension of matrix_a.

  • +
  • the type of the result is the same as if an element of each argument +had been multiplied as a RHS expression (that is, if the arguments +are not of the same type the result follows the same rules of promotion +as a simple scalar multiplication of the two types would produce)

  • +
  • If one argument is logical, both must be logical. For logicals +the resulting type is as if the .and. operator has been used on +elements from the arrays.

  • +
  • The shape of the result depends on the shapes of the arguments +as described below.

  • +
+
+
+

Description#

+

matmul(3) performs a matrix multiplication on numeric or logical +arguments.

+
+
+

Options#

+
    +
  • +
    matrix_a

    A numeric or logical array with a rank of one or two.

    +
    +
    +
  • +
  • +
    matrix_b

    A numeric or logical array with a rank of one or two. The last +dimension of matrix_a and the first dimension of matrix_b +must be equal.

    +
    +
    +

    Note that matrix_a and matrix_b may be different numeric +types.

    +
  • +
+
+
+

Result#

+
+

Numeric Arguments#

+

If matrix_a and matrix_b are numeric the result is an +array containing the conventional matrix product of matrix_a +and matrix_b.

+

First, for the numeric expression C=matmul(A,B)

+
    +
  • Any vector A(n) is treated as a row vector A(1,n).

  • +
  • Any vector B(n) is treated as a column vector B(n,1).

  • +
+
+
Shape and Rank#
+

The shape of the result can then be determined as the number of rows +of the first matrix and the number of columns of the second; but if +any argument is of rank one (a vector) the result is also rank one. +Conversely when both arguments are of rank two, the result has a rank +of two. That is …

+
    +
  • If matrix_a has shape [n,m] and matrix_b has shape [m,k], +the result has shape [n,k].

  • +
  • If matrix_a has shape [m] and matrix_b has shape [m,k], +the result has shape [k].

  • +
  • If matrix_a has shape [n,m] and matrix_b has shape [m], +the result has shape [n].

  • +
+
+
+
Values#
+

Then element C(i,j) of the product is obtained by multiplying +term-by-term the entries of the ith row of A and the jth column +of B, and summing these products. In other words, C(i,j) +is the dot product of the ith row of A and the jth column of B.

+
+
+
+

Logical Arguments#

+
+
Values#
+

If matrix_a and matrix_b are of type logical, the array elements +of the result are instead:

+
  Value_of_Element (i,j) = &
+  ANY( (row_i_of_MATRIX_A) .AND. (column_j_of_MATRIX_B) )
+
+
+
+
+
+
+

Examples#

+

Sample program:

+
program demo_matmul
+implicit none
+integer :: a(2,3), b(3,2), c(2), d(3), e(2,2), f(3), g(2), v1(4),v2(4)
+   a = reshape([1, 2, 3, 4, 5, 6], [2, 3])
+   b = reshape([10, 20, 30, 40, 50, 60], [3, 2])
+   c = [1, 2]
+   d = [1, 2, 3]
+   e = matmul(a, b)
+   f = matmul(c,a)
+   g = matmul(a,d)
+
+   call print_matrix_int('A is ',a)
+   call print_matrix_int('B is ',b)
+   call print_vector_int('C is ',c)
+   call print_vector_int('D is ',d)
+   call print_matrix_int('E is matmul(A,B)',e)
+   call print_vector_int('F is matmul(C,A)',f)
+   call print_vector_int('G is matmul(A,D)',g)
+
+   ! look at argument shapes when one is a vector
+   write(*,'(" > shape")')
+   ! at least one argument must be of rank two
+   ! so for two vectors at least one must be reshaped
+   v1=[11,22,33,44]
+   v2=[10,20,30,40]
+
+   ! these return a vector C(1:1)
+   ! treat A(1:n) as A(1:1,1:n)
+   call print_vector_int('Cd is a vector (not a scalar)',&
+   & matmul(reshape(v1,[1,size(v1)]),v2))
+   ! or treat B(1:m) as B(1:m,1:1)
+   call print_vector_int('cD is a vector too',&
+   & matmul(v1,reshape(v2,[size(v2),1])))
+
+   ! or treat A(1:n) as A(1:1,1:n) and B(1:m) as B(1:m,1:1)
+   ! but note this returns a matrix C(1:1,1:1) not a vector!
+   call print_matrix_int('CD is a matrix',matmul(&
+   & reshape(v1,[1,size(v1)]), &
+   & reshape(v2,[size(v2),1])))
+
+contains
+
+! CONVENIENCE ROUTINES TO PRINT IN ROW-COLUMN ORDER
+subroutine print_vector_int(title,arr)
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:)
+   call print_matrix_int(title,reshape(arr,[1,shape(arr)]))
+end subroutine print_vector_int
+
+subroutine print_matrix_int(title,arr)
+!@(#) print small 2d integer arrays in row-column format
+character(len=*),parameter :: all='(" > ",*(g0,1x))' ! a handy format
+character(len=*),intent(in)  :: title
+integer,intent(in)           :: arr(:,:)
+integer                      :: i
+character(len=:),allocatable :: biggest
+
+   print all
+   print all, trim(title)
+   biggest='           '  ! make buffer to write integer into
+   ! find how many characters to use for integers
+   write(biggest,'(i0)')ceiling(log10(real(maxval(abs(arr)))))+2
+   ! use this format to write a row
+   biggest='(" > [",*(i'//trim(biggest)//':,","))'
+   ! print one row of array at a time
+   do i=1,size(arr,dim=1)
+      write(*,fmt=biggest,advance='no')arr(i,:)
+      write(*,'(" ]")')
+   enddo
+
+end subroutine print_matrix_int
+
+end program demo_matmul
+
+
+

Results:

+
    >
+    > A is
+    > [  1,  3,  5 ]
+    > [  2,  4,  6 ]
+    >
+    > B is
+    > [  10,  40 ]
+    > [  20,  50 ]
+    > [  30,  60 ]
+    >
+    > C is
+    > [  1,  2 ]
+    >
+    > D is
+    > [  1,  2,  3 ]
+    >
+    > E is matmul(A,B)
+    > [  220,  490 ]
+    > [  280,  640 ]
+    >
+    > F is matmul(C,A)
+    > [   5,  11,  17 ]
+    >
+    > G is matmul(A,D)
+    > [  22,  28 ]
+    > shape
+    >
+    > Cd is a vector (not a scalar)
+    > [  3300 ]
+    >
+    > cD is a vector too
+    > [  3300 ]
+    >
+    > CD is a matrix
+    > [  3300 ]
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

product(3), +transpose(3)

+
+
+

Resources#

+
    +
  • Matrix multiplication : Wikipedia

  • +
  • The Winograd variant of Strassen’s matrix-matrix multiply algorithm may +be of interest for optimizing multiplication of very large matrices. See

  • +
+
    "GEMMW: A portable level 3 BLAS Winograd variant of Strassen's
+    matrix-matrix multiply algorithm",
+
+    Douglas, C. C., Heroux, M., Slishman, G., and Smith, R. M.,
+    Journal of Computational Physics,
+    Vol. 110, No. 1, January 1994, pages 1-10.
+
+  The numerical instabilities of Strassen's method for matrix
+  multiplication requires special processing.
+
+
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

parity#

+
+

Name#

+

parity(3) - [ARRAY:REDUCTION] Array reduction by .NEQV. operation

+
+
+

Synopsis#

+
    result = parity( mask [,dim] )
+
+
+
     logical(kind=KIND) function parity(mask, dim)
+
+      type(logical(kind=KIND)),intent(in)        :: mask(..)
+      type(integer(kind=**)),intent(in),optional :: dim
+
+
+
+
+

Characteristics#

+
    +
  • mask is a logical array

  • +
  • dim is an integer scalar

  • +
  • the result is of type logical with the same kind type parameter as mask. +It is a scalar if dim does not appear; otherwise it is the rank and shape +of mask with the dimension specified by dim removed.

  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

parity(3) calculates the parity array (i.e. the reduction using .neqv.) of +mask along dimension dim if dim is present and not 1. Otherwise, it +returns the parity of the entire mask array as a scalar.

+
+
+

Options#

+
    +
  • +
    mask

    Shall be an array of type logical.

    +
    +
    +
  • +
  • +
    dim

    (Optional) shall be a scalar of type integer with a value in the +range from 1 to n, where n equals the rank of mask.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type as mask.

+

If dim is absent, a scalar with the parity of all elements in mask +is returned: .true. if an odd number of elements are .true. +and .false. otherwise.

+

If MASK has rank one, PARITY (MASK, DIM) is equal to PARITY (MASK). Otherwise, the +result is an array of parity values with dimension dim dropped.

+
+
+

Examples#

+

Sample program:

+
program demo_parity
+implicit none
+logical, parameter :: T=.true., F=.false.
+logical :: x(3,4)
+  ! basics
+   print *, parity([T,F])
+   print *, parity([T,F,F])
+   print *, parity([T,F,F,T])
+   print *, parity([T,F,F,T,T])
+   x(1,:)=[T,T,T,T]
+   x(2,:)=[T,T,T,T]
+   x(3,:)=[T,T,T,T]
+   print *, parity(x)
+   print *, parity(x,dim=1)
+   print *, parity(x,dim=2)
+end program demo_parity
+
+
+

Results:

+
 >  T
+ >  T
+ >  F
+ >  T
+ >  F
+ >  T T T T
+ >  F F F
+
+
+
+
+

Standard#

+

Fortran 2008

+
+
+

See also#

+
    +
  • all(3) - Determines if all the values are true

  • +
  • any(3) - Determines if any of the values in the logical array are .true.

  • +
  • count(3) - Count true values in an array

  • +
  • sum(3) - Sum the elements of an array

  • +
  • maxval(3) - Determines the maximum value in an array or row

  • +
  • minval(3) - Minimum value of an array

  • +
  • product(3) - Product of array elements

  • +
  • reduce(3) - General array reduction

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

null#

+
+

Name#

+

null(3) - [TRANSFORMATIONAL] Function that returns a disassociated pointer

+
+
+

Synopsis#

+
    ptr => null( [mold] )
+
+
+
     function null(mold)
+
+      type(TYPE(kind=**)),pointer,optional :: mold
+
+
+
+
+

Characteristics#

+
    +
  • mold is a pointer of any association status and of any type.

  • +
  • The result is a disassociated pointer or an unallocated allocatable entity.

  • +
+
+
+

Description#

+

null(3) returns a disassociated pointer.

+

If mold is present, a disassociated pointer of the same type is +returned, otherwise the type is determined by context.

+

In Fortran 95, mold is optional. Please note that Fortran 2003 +includes cases where it is required.

+
+
+

Options#

+
    +
  • +
    mold

    a pointer of any association status and of any +type.

    +
    +
    +
  • +
+
+
+

Result#

+

A disassociated pointer or an unallocated allocatable entity.

+
+
+

Examples#

+

Sample program:

+
!program demo_null
+module showit
+implicit none
+private
+character(len=*),parameter :: g='(*(g0,1x))'
+public gen
+! a generic interface that only differs in the
+! type of the pointer the second argument is
+interface gen
+ module procedure s1
+ module procedure s2
+end interface
+
+contains
+
+subroutine s1 (j, pi)
+ integer j
+ integer, pointer :: pi
+   if(associated(pi))then
+      write(*,g)'Two integers in S1:,',j,'and',pi
+   else
+      write(*,g)'One integer in S1:,',j
+   endif
+end subroutine s1
+
+subroutine s2 (k, pr)
+ integer k
+ real, pointer :: pr
+   if(associated(pr))then
+      write(*,g)'integer and real in S2:,',k,'and',pr
+   else
+      write(*,g)'One integer in S2:,',k
+   endif
+end subroutine s2
+
+end module showit
+
+program demo_null
+use showit, only : gen
+
+real,target :: x = 200.0
+integer,target :: i = 100
+
+real, pointer :: real_ptr
+integer, pointer :: integer_ptr
+
+! so how do we call S1() or S2() with a disassociated pointer?
+
+! the answer is the null() function with a mold value
+
+! since s1() and s2() both have a first integer
+! argument the NULL() pointer must be associated
+! to a real or integer type via the mold option
+! so the following can distinguish whether s1(1)
+! or s2() is called, even though the pointers are
+! not associated or defined
+
+call gen (1, null (real_ptr) )    ! invokes s2
+call gen (2, null (integer_ptr) ) ! invokes s1
+real_ptr => x
+integer_ptr => i
+call gen (3, real_ptr ) ! invokes s2
+call gen (4, integer_ptr ) ! invokes s1
+
+end program demo_null
+
+
+

Results:

+
   One integer in S2:, 1
+   One integer in S1:, 2
+   integer and real in S2:, 3 and 200.000000
+   Two integers in S1:, 4 and 100
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

associated(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

reduce#

+
+

Name#

+

reduce(3) - [TRANSFORMATIONAL] General reduction of an array

+
+
+

Synopsis#

+

There are two forms to this function:

+
   result = reduce(array, operation [,mask]  [,identity]  [,ordered] )
+
+
+

or

+
   result = reduce (array, operation, dim  &
+   & [,mask] [,identity] [,ordered] )
+
+
+
    type(TYPE(kind=KIND)) function reduce &
+    & (array, operation, dim, mask, identity, ordered )
+
+     type(TYPE(kind=KIND)),intent(in) :: array
+     pure function                  :: operation
+     integer,intent(in),optional    :: dim
+     logical,optional               :: mask
+     type(TYPE),intent(in),optional :: identity
+     logical,intent(in),optional    :: ordered
+
+
+
+
+

Characteristics#

+
    +
  • array is an array of any type

  • +
  • operation is a pure function with exactly two arguments

    +
      +
    • each argument is scalar, non-allocatable, a nonpointer, +nonpolymorphic and nonoptional with the same type and kind as array.

    • +
    • if one argument has the asynchronous, target, or value attribute so +shall the other.

    • +
    +
  • +
  • dim is an integer scalar

  • +
  • mask is a logical conformable with array

  • +
  • identity is a scalar with the same type and type parameters as array

  • +
  • ordered is a logical scalar

  • +
  • the result is of the same type and type parameters as array.

  • +
+
+
+

Description#

+

reduce(3) reduces a list of conditionally selected values from +an array to a single value by iteratively applying a binary function.

+

Common in functional programming, a reduce function applies a +binary operator (a pure function with two arguments) to all elements +cumulatively.

+

reduce is a “higher-order” function; ie. it is a function that +receives other functions as arguments.

+

The reduce function receives a binary operator (a function with +two arguments, just like the basic arithmetic operators). It is first +applied to two unused values in the list to generate an accumulator +value which is subsequently used as the first argument to the function +as the function is recursively applied to all the remaining selected +values in the input array.

+
+
+

Options#

+
    +
  • +
    array

    An array of any type and allowed rank to select values from.

    +
    +
    +
  • +
  • +
    operation

    shall be a pure function with exactly two arguments; +each argument shall be a scalar, nonallocatable, +nonpointer, nonpolymorphic, nonoptional dummy data object +with the same type and type parameters as array. If +one argument has the ASYNCHRONOUS, TARGET, or VALUE +attribute, the other shall have that attribute. Its result +shall be a nonpolymorphic scalar and have the same type +and type parameters as array. operation should +implement a mathematically associative operation. It +need not be commutative.

    +
    +
    +

    NOTE

    +

    If operation is not computationally associative, REDUCE +without ORDERED=.TRUE. with the same argument values +might not always produce the same result, as the processor +can apply the associative law to the evaluation.

    +

    Many operations that mathematically are associative are +not when applied to floating-point numbers. The order +you sum values in may affect the result, for example.

    +
  • +
  • +
    dim

    An integer scalar with a value in the range +1<= dim <= n, where n is the rank of array.

    +
    +
    +
  • +
  • +
    mask

    (optional) shall be of type logical and shall be +conformable with array.

    +
    +
    +

    When present only those elements of array are passed +to operation for which the corresponding elements +of mask are true, as if **array* was filtered with +**pack(3)**.

    +
  • +
  • +
    identity

    shall be scalar with the same type and type parameters as array. +If the initial sequence is empty, the result has the value identify +if identify is present, and otherwise, error termination is +initiated.

    +
    +
    +
  • +
  • +
    ordered

    shall be a logical scalar. If ordered is present with the value +.true., the calls to the operator function begins with the first +two elements of array and the process continues in row-column +order until the sequence has only one element which is the value of the +reduction. Otherwise, the compiler is free to assume that the operation +is commutative and may evaluate the reduction in the most optimal way.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is of the same type and type parameters as array. It is +scalar if dim does not appear.

+

If dim is present, it indicates the one dimension along which to +perform the reduction, and the resultant array has a rank reduced by +one relative to the input array.

+
+
+

Examples#

+

The following examples all use the function MY_MULT, which returns +the product of its two real arguments.

+
   program demo_reduce
+   implicit none
+   character(len=*),parameter :: f='("[",*(g0,",",1x),"]")'
+   integer,allocatable :: arr(:), b(:,:)
+
+   ! Basic usage:
+      ! the product of the elements of an array
+      arr=[1, 2, 3, 4 ]
+      write(*,*) arr
+      write(*,*) 'product=', reduce(arr, my_mult)
+      write(*,*) 'sum=', reduce(arr, my_sum)
+
+   ! Examples of masking:
+      ! the product of only the positive elements of an array
+      arr=[1, -1, 2, -2, 3, -3 ]
+      write(*,*)'positive value product=',reduce(arr, my_mult, mask=arr>0)
+   ! sum values ignoring negative values
+      write(*,*)'sum positive values=',reduce(arr, my_sum, mask=arr>0)
+
+   ! a single-valued array returns the single value as the
+   ! calls to the operator stop when only one element remains
+      arr=[ 1234 ]
+      write(*,*)'single value sum',reduce(arr, my_sum )
+      write(*,*)'single value product',reduce(arr, my_mult )
+
+   ! Example of operations along a dimension:
+   !  If B is the array   1 3 5
+   !                      2 4 6
+      b=reshape([1,2,3,4,5,6],[2,3])
+      write(*,f) REDUCE(B, MY_MULT),'should be [720]'
+      write(*,f) REDUCE(B, MY_MULT, DIM=1),'should be [2,12,30]'
+      write(*,f) REDUCE(B, MY_MULT, DIM=2),'should be [15, 48]'
+
+   contains
+
+   pure function my_mult(a,b) result(c)
+   integer,intent(in) :: a, b
+   integer            :: c
+      c=a*b
+   end function my_mult
+
+   pure function my_sum(a,b) result(c)
+   integer,intent(in) :: a, b
+   integer            :: c
+      c=a+b
+   end function my_sum
+
+   end program demo_reduce
+
+
+

Results:

+
     >  1 2 3 4
+     >  product= 24
+     >  sum=     10
+     >  positive value sum= 6
+     >  sum positive values= 6
+     >  single value sum     1234
+     >  single value product 1234
+     > [720, should be [720],
+     > [2, 12, 30, should be [2,12,30],
+     > [15, 48, should be [15, 48],
+
+
+
+
+

Standard#

+

Fortran 2018

+
+
+

See Also#

+ +
+
+

Resources#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/intrinsics/type/index.html b/learn/intrinsics/type/index.html new file mode 100644 index 000000000000..3c10cbeef035 --- /dev/null +++ b/learn/intrinsics/type/index.html @@ -0,0 +1,3599 @@ + + + + + + + + + Types and kinds — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Types and kinds#

+

These intrinsics allow for explicitly casting one type of variable to +another or can be used to conditionally execute code blocks based on +variable types when working with polymorphic variables.

+
+

Fortran Data Types#

+

Fortran provides five basic intrinsic data types:

+
    +
  • +
    Integer type

    The integer types can hold only whole number values.

    +
    +
    +
  • +
  • +
    Real type

    Stores floating point numbers, such as 2.0, 3.1415, -100.876, etc.

    +
    +
    +
  • +
  • +
    Complex type

    A complex number has two parts, +the real part and the imaginary part. Two consecutive floating +point storage units store the two parts.

    +
    +
    +
  • +
  • +
    Logical type

    There are only two logical values: .true. and .false.

    +
    +
    +
  • +
  • +
    Character type

    The character type stores strings. The length of the string +can be specified by the len specifier. If no length is specified, it is 1.

    +
    +
    +
  • +
+

These “types” can be of many “kinds”. Often different numeric kinds +take up different storage sizes and therefore can represent +different ranges; but a different kind can have other meanings. +A character variable might represent ASCII characters or UTF-8 or +Unicode characters, for example.

+

You can derive your own data types from these fundamental types as well.

+
+
+

Implicit Typing#

+

Fortran allows a feature called implicit typing, i.e., you do not have +to declare some variables before use. By default if a variable is not declared, +then the first letter of its name will determine its type:

+
    +
  1. Variable names starting with i-n (the first two letters of +“integer”) specify integer variables.

  2. +
  3. All other variable names default to real.

  4. +
+

However, in most circles it is considered good programming practice to declare all the +variables. For that to be enforced, you start your variable declaration section with +a statement that turns off implicit typing: +the statement

+
implicit none
+
+
+

For more information refer to the implicit statement.

+
+
+

aimag#

+
+

Name#

+

aimag(3) - [TYPE:NUMERIC] Imaginary part of complex number

+
+
+

Synopsis#

+
    result = aimag(z)
+
+
+
     elemental complex(kind=KIND) function aimag(z)
+
+      complex(kind=KIND),intent(in) :: z
+
+
+
+
+

Characteristics#

+
    +
  • The type of the argument z shall be complex and any supported +complex kind

  • +
  • The return value is of type real with the kind type parameter of +the argument.

  • +
+
+
+

Description#

+

aimag(3) yields the imaginary part of the complex argument z.

+

This is similar to the modern complex-part-designator %IM which also +designates the imaginary part of a value, accept a designator can appear +on the left-hand side of an assignment as well, as in val%im=10.0.

+
+
+

Options#

+
    +
  • +
    z

    The complex value to extract the imaginary component of.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is a real value with the magnitude and sign of the +imaginary component of the argument z.

+

That is, If z has the value (x,y), the result has the value +y.

+
+
+

Examples#

+

Sample program:

+
program demo_aimag
+use, intrinsic :: iso_fortran_env, only : real_kinds, &
+ & real32, real64, real128
+implicit none
+character(len=*),parameter :: g='(*(1x,g0))'
+complex              :: z4
+complex(kind=real64) :: z8
+   ! basics
+    z4 = cmplx(1.e0, 2.e0)
+    print *, 'value=',z4
+    print g, 'imaginary part=',aimag(z4),'or', z4%im
+
+    ! other kinds other than the default may be supported
+    z8 = cmplx(3.e0_real64, 4.e0_real64,kind=real64)
+    print *, 'value=',z8
+    print g, 'imaginary part=',aimag(z8),'or', z8%im
+
+    ! an elemental function can be passed an array
+    print *
+    print *, [z4,z4/2.0,z4+z4,z4**3]
+    print *
+    print *, aimag([z4,z4/2.0,z4+z4,z4**3])
+
+end program demo_aimag
+
+
+

Results:

+
 value= (1.00000000,2.00000000)
+ imaginary part= 2.00000000 or 2.00000000
+ value= (3.0000000000000000,4.0000000000000000)
+ imaginary part= 4.0000000000000000 or 4.0000000000000000
+
+ (1.00000000,2.00000000) (0.500000000,1.00000000) (2.00000000,4.00000000)
+ (-11.0000000,-2.00000000)
+
+   2.00000000       1.00000000       4.00000000      -2.00000000
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+ +

Fortran has strong support for complex values, including many intrinsics +that take or produce complex values in addition to algebraic and +logical expressions:

+

abs(3), +acosh(3), +acos(3), +asinh(3), +asin(3), +atan2(3), +atanh(3), +atan(3), +cosh(3), +cos(3), +co_sum(3), +dble(3), +dot_product(3), +exp(3), +int(3), +is_contiguous(3), +kind(3), +log(3), +matmul(3), +precision(3), +product(3), +range(3), +rank(3), +sinh(3), +sin(3), +sqrt(3), +storage_size(3), +sum(3), +tanh(3), +tan(3), +unpack(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

cmplx#

+
+

Name#

+

cmplx(3) - [TYPE:NUMERIC] Conversion to a complex type

+
+
+

Synopsis#

+
    result = cmplx(x [,kind]) | cmplx(x [,y] [,kind])
+
+
+
     elemental complex(kind=KIND) function cmplx( x, y, kind )
+
+      type(TYPE(kind=**)),intent(in)          :: x
+      type(TYPE(kind=**)),intent(in),optional :: y
+      integer(kind=**),intent(in),optional    :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • x may be integer, real, or complex.

  • +
  • y may be integer or real. +y is allowed only if x is not complex.

  • +
  • KIND is a constant integer initialization expression indicating the kind +parameter of the result.

  • +
+

The type of the arguments does not affect the kind of the result except +for a complex x value.

+
    +
  • if kind is not present and x is complex the result is of the kind +of x.

  • +
  • if kind is not present and x is not complex the result if of default +complex kind.

  • +
+

NOTE: a kind designated as ** may be any supported kind for the type

+
+
+

Description#

+

The cmplx(3) function converts numeric values to a complex value.

+

Even though constants can be used to define a complex variable using syntax like

+
      z = (1.23456789, 9.87654321)
+
+
+

this will not work for variables. So you cannot enter

+
      z = (a, b)  ! NO ! (unless a and b are constants, not variables)
+
+
+

so to construct a complex value using non-complex values you must use +the cmplx(3) function:

+
      z = cmplx(a, b)
+
+
+

or assign values separately to the imaginary and real components using +the %IM and %RE designators:

+
      z%re = a
+      z%im = b
+
+
+

If x is complex y is not allowed and cmplx essentially +returns the input value except for an optional change of kind, which can be +useful when passing a value to a procedure that requires the arguments +to have a different kind (and does not return an altered value):

+
      call something(cmplx(z,kind=real64))
+
+
+

would pass a copy of a value with kind=real64 even if z had a different kind

+

but otherwise is equivalent to a simple assign. So if z1 and z2 were complex:

+
      z2 = z1        ! equivalent statements
+      z2 = cmplx(z1)
+
+
+

If x is not complex x is only used to define the real component +of the result but y is still optional – the imaginary part of the +result will just be assigned a value of zero.

+

If y is present it is converted to the imaginary component.

+
+

cmplx(3) and double precision#

+

Primarily in order to maintain upward compatibility you need to be careful +when working with complex values of higher precision that the default.

+

It was necessary for Fortran to continue to specify that cmplx(3) +always return a result of the default kind if the kind option +is absent, since that is the behavior mandated by FORTRAN 77.

+

It might have been preferable to use the highest precision of the +arguments for determining the return kind, but that is not the case. So +with arguments with greater precision than default values you are +required to use the kind argument or the greater precision values +will be reduced to default precision.

+

This means cmplx(d1,d2), where d1 and d2 are +doubleprecision, is treated as:

+
      cmplx(sngl(d1), sngl(d2))
+
+
+

which looses precision.

+

So Fortran 90 extends the cmplx(3) intrinsic by adding an extra +argument used to specify the desired kind of the complex result.

+
      integer,parameter :: dp=kind(0.0d0)
+      complex(kind=dp) :: z8
+     ! wrong ways to specify constant values
+      ! note this was stored with default real precision !
+      z8 = cmplx(1.2345678901234567d0, 1.2345678901234567d0)
+      print *, 'NO, Z8=',z8,real(z8),aimag(z8)
+
+      z8 = cmplx(1.2345678901234567e0_dp, 1.2345678901234567e0_dp)
+      ! again, note output components are just real
+      print *, 'NO, Z8=',z8,real(z8),aimag(z8)
+      !
+      ! YES
+      !
+      ! kind= makes it work
+      z8 = cmplx(1.2345678901234567d0, 1.2345678901234567d0,kind=dp)
+      print *, 'YES, Z8=',z8,real(z8),aimag(z8)
+
+
+

A more recent alternative to using cmplx(3) is “F2018 component +syntax” where real and imaginary parts of a complex entity can be +accessed independently:

+
value%RE     ! %RE specifies the real part
+or
+value%IM     ! %IM specifies the imaginary part
+
+
+

Where the designator value is of course of complex type.

+

The type of a complex-part-designator is real, and its kind and shape +are those of the designator. That is, you retain the precision of the +complex value by default, unlike with cmplx.

+

The following are examples of complex part designators:

+
       impedance%re           !-- Same value as real(impedance)
+       fft%im                 !-- Same value as AIMAG(fft)
+       x%im = 0.0             !-- Sets the imaginary part of x to zero
+       x(1:2)%re=[10,20]      !-- even if x is an array
+
+
+
+
+

NOTE for I/O#

+

Note that if format statements are specified a complex value is +treated as two real values.

+

For list-directed I/O (ie. using an asterisk for a format) and NAMELIST +output the values are expected to be delimited by “(” and “)” and of +the form “(realpart,imaginary_part)”. For NAMELIST input parenthesized +values or lists of multiple _real values are acceptable.

+
+
+
+

Options#

+
    +
  • +
    x

    The value assigned to the real component of the result when x is +not complex.

    +
    +
    +

    If x is complex, the result is the same as if the real part of the +input was passed as x and the imaginary part as y.

    +
  • +
+
     result = CMPLX (REAL (X), AIMAG (X), KIND).
+
+
+

That is, a complex x value is copied to the result value with a +possible change of kind.

+
    +
  • +
    y

    y is only allowed if x is not complex. Its value +is assigned to the imaginary component of the result and defaults +to a value of zero if absent.

    +
    +
    +
  • +
  • +
    kind

    An integer initialization expression indicating the kind +parameter of the result.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of complex type, with magnitudes determined by the +values x and y.

+

The common case when x is not complex is that the real +component of the result is assigned the value of x and the imaginary +part is zero or the value of y if y is present.

+

When x is complex y is not allowed and the result is the same +value as x with a possible change of kind. That is, the real part +is real(x, kind) and the imaginary part is real(y, kind).

+
+
+

Examples#

+

Sample program:

+
program demo_aimag
+implicit none
+integer,parameter :: dp=kind(0.0d0)
+real(kind=dp)     :: precise
+complex(kind=dp)  :: z8
+complex           :: z4, zthree(3)
+   precise=1.2345678901234567d0
+
+  ! basic
+   z4 = cmplx(-3)
+   print *, 'Z4=',z4
+   z4 = cmplx(1.23456789, 1.23456789)
+   print *, 'Z4=',z4
+   ! with a format treat a complex as two real values
+   print '(1x,g0,1x,g0,1x,g0)','Z4=',z4
+
+  ! working with higher precision values
+   ! using kind=dp makes it keep DOUBLEPRECISION precision
+   ! otherwise the result would be of default kind
+   z8 = cmplx(precise, -precise )
+   print *, 'lost precision Z8=',z8
+   z8 = cmplx(precise, -precise ,kind=dp)
+   print *, 'kept precision Z8=',z8
+
+  ! assignment of constant values does not require cmplx(3)00
+   ! The following is intuitive and works without calling cmplx(3)
+   ! but does not work for variables just constants
+   z8 = (1.1111111111111111d0, 2.2222222222222222d0 )
+   print *, 'Z8 defined with constants=',z8
+
+  ! what happens when you assign a complex to a real?
+   precise=z8
+   print *, 'LHS=',precise,'RHS=',z8
+
+  ! elemental
+   zthree=cmplx([10,20,30],-1)
+   print *, 'zthree=',zthree
+
+  ! descriptors are an alternative
+   zthree(1:2)%re=[100,200]
+   print *, 'zthree=',zthree
+
+end program demo_aimag
+
+
+

Results:

+
    Z4= (-3.000000,0.0000000E+00)
+    Z4= (1.234568,1.234568)
+    Z4= 1.234568 1.234568
+    lost precision Z8= (1.23456788063049,-1.23456788063049)
+    kept precision Z8= (1.23456789012346,-1.23456789012346)
+    Z8 defined with constants= (1.11111111111111,2.22222222222222)
+    LHS=   1.11111111111111      RHS= (1.11111111111111,2.22222222222222)
+    zthree= (10.00000,-1.000000) (20.00000,-1.000000) (30.00000,-1.000000)
+    zthree= (100.0000,-1.000000) (200.0000,-1.000000) (30.00000,-1.000000)
+
+
+
+
+

Standard#

+

FORTRAN 77, KIND added in Fortran 90.

+
+
+

See Also#

+
    +
  • aimag(3) - Imaginary part of complex number

  • +
  • conjg(3) - Complex conjugate function

  • +
  • real(3) - Convert to real type

  • +
+

Fortran has strong support for complex values, including many intrinsics +that take or produce complex values in addition to algebraic and +logical expressions:

+

abs(3), +acosh(3), +acos(3), +asinh(3), +asin(3), +atan2(3), +atanh(3), +atan(3), +cosh(3), +cos(3), +co_sum(3), +dble(3), +dot_product(3), +exp(3), +int(3), +is_contiguous(3), +kind(3), +log(3), +matmul(3), +precision(3), +product(3), +range(3), +rank(3), +sinh(3), +sin(3), +sqrt(3), +storage_size(3), +sum(3), +tanh(3), +tan(3), +unpack(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

int#

+
+

Name#

+

int(3) - [TYPE:NUMERIC] Truncate towards zero and convert to integer

+
+
+

Synopsis#

+
    result = int(a [,kind])
+
+
+
     elemental integer(kind=KIND) function int(a, KIND )
+
+      TYPE(kind=**),intent(in) :: a
+      integer,optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • a shall be of type integer, real, or complex, or a boz-literal-constant.

  • +
  • KIND shall be a scalar integer constant expression.

  • +
+
+
+

Description#

+

int(3) truncates towards zero and return an integer.

+
+
+

Options#

+
    +
  • +
    a

    is the value to truncate towards zero

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result. +If not present the returned type is that of default integer type.

    +
    +
    +
  • +
+
+
+

Result#

+

returns an integer variable applying the following rules:

+

Case:

+
    +
  1. If a is of type integer, int(a) = a

  2. +
  3. If a is of type real and |a| < 1, int(a) equals 0. If |a| >= +1, then int(a) equals the integer whose magnitude does not exceed +a and whose sign is the same as the sign of a.

  4. +
  5. If a is of type complex, rule 2 is applied to the real part of a.

  6. +
  7. If a is a boz-literal constant, it is treated as an integer +with the kind specified.

    +

    The interpretation of a bit sequence whose most significant bit is +1 is processor dependent.

    +
  8. +
+

The result is undefined if it cannot be represented in the specified integer type.

+
+
+

Examples#

+

Sample program:

+
program demo_int
+use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+implicit none
+integer :: i = 42
+complex :: z = (-3.7, 1.0)
+real :: x=-10.5, y=10.5
+
+   print *, int(x), int(y)
+
+   print *, int(i)
+
+   print *, int(z), int(z,8)
+   ! elemental
+   print *, int([-10.9,-10.5,-10.3,10.3,10.5,10.9])
+   ! note int(3) truncates towards zero
+
+   ! CAUTION:
+   ! a number bigger than a default integer can represent
+   ! produces an incorrect result and is not required to
+   ! be detected by the program.
+   x=real(huge(0))+1000.0
+   print *, int(x),x
+   ! using a larger kind
+   print *, int(x,kind=int64),x
+
+   print *, int(&
+   & B"111111111111111111111111111111111111111111111111111111111111111",&
+   & kind=int64)
+   print *, int(O"777777777777777777777",kind=int64)
+   print *, int(Z"7FFFFFFFFFFFFFFF",kind=int64)
+
+   ! elemental
+   print *
+   print *,int([ &
+   &  -2.7,  -2.5, -2.2, -2.0, -1.5, -1.0, -0.5, &
+   &  0.0,   &
+   &  +0.5,  +1.0, +1.5, +2.0, +2.2, +2.5, +2.7  ])
+
+end program demo_int
+
+
+

Results:

+
 >          -10   10
+ >           42
+ >           -3  -3
+ >          -10  -10  -10   10   10  10
+ >  -2147483648   2.14748467E+09
+ >   2147484672   2.14748467E+09
+ >   9223372036854775807
+ >   9223372036854775807
+ >   9223372036854775807
+ >
+ >  -2          -2          -2          -2          -1
+ >  -1           0           0           0           1
+ >   1           2           2           2           2
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+

aint(3), +anint(3), +nint(3), +selected_int_kind(3), +ceiling(3), +floor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

nint#

+
+

Name#

+

nint(3) - [TYPE:NUMERIC] Nearest whole number

+
+
+

Synopsis#

+
    result = nint( a [,kind] )
+
+
+
     elemental integer(kind=KIND) function nint(a, kind )
+
+      real(kind=**),intent(in) :: a
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • a is type real of any kind

  • +
  • KIND is a scalar integer constant expression

  • +
  • The result is default integer kind or the value of kind +if kind is present.

  • +
+
+
+

Description#

+

nint(3) rounds its argument to the nearest whole number with its +sign preserved.

+

The user must ensure the value is a valid value for the range of the +kind returned. If the processor cannot represent the result in the kind +specified, the result is undefined.

+

If a is greater than zero, nint(a) has the value int(a+0.5).

+

If a is less than or equal to zero, nint(a) has the value +int(a-0.5).

+
+
+

Options#

+
    +
  • +
    a

    The value to round to the nearest whole number

    +
    +
    +
  • +
  • +
    kind

    can specify the kind of the output value. If not present, the +output is the default type of integer.

    +
    +
    +
  • +
+
+
+

Result#

+

The result is the integer nearest a, or if there are two integers +equally near a, the result is whichever such integer has the greater +magnitude.

+

The result is undefined if it cannot be represented in the specified +integer type.

+
+
+

Examples#

+

Sample program:

+
program demo_nint
+implicit none
+integer,parameter   :: dp=kind(0.0d0)
+real,allocatable    :: in(:)
+integer,allocatable :: out(:)
+integer             :: i
+real                :: x4
+real(kind=dp)       :: x8
+
+  ! basic use
+   x4 = 1.234E0
+   x8 = 4.721_dp
+   print *, nint(x4), nint(-x4)
+   print *, nint(x8), nint(-x8)
+
+  ! elemental
+   in = [ -2.7,  -2.5, -2.2, -2.0, -1.5, -1.0, -0.5, -0.4, &
+        &  0.0,   &
+        & +0.04, +0.5, +1.0, +1.5, +2.0, +2.2, +2.5, +2.7  ]
+   out = nint(in)
+   do i=1,size(in)
+      write(*,*)in(i),out(i)
+   enddo
+
+  ! dusty corners
+   ISSUES: block
+   use,intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+   integer :: icheck
+      ! make sure input is in range for the type returned
+      write(*,*)'Range limits for typical KINDS:'
+      write(*,'(1x,g0,1x,g0)')  &
+      & int8,huge(0_int8),   &
+      & int16,huge(0_int16), &
+      & int32,huge(0_int32), &
+      & int64,huge(0_int64)
+
+      ! the standard does not require this to be an error ...
+      x8=12345.67e15 ! too big of a number
+      icheck=selected_int_kind(ceiling(log10(x8)))
+      write(*,*)'Any KIND big enough? ICHECK=',icheck
+      print *, 'These are all wrong answers for ',x8
+      print *, nint(x8,kind=int8)
+      print *, nint(x8,kind=int16)
+      print *, nint(x8,kind=int32)
+      print *, nint(x8,kind=int64)
+   endblock ISSUES
+
+end program demo_nint
+
+
+

Results:

+
 >               1          -1
+ >               5          -5
+ >      -2.700000              -3
+ >      -2.500000              -3
+ >      -2.200000              -2
+ >      -2.000000              -2
+ >      -1.500000              -2
+ >      -1.000000              -1
+ >     -0.5000000              -1
+ >     -0.4000000               0
+ >      0.0000000E+00           0
+ >      3.9999999E-02           0
+ >      0.5000000               1
+ >       1.000000               1
+ >       1.500000               2
+ >       2.000000               2
+ >       2.200000               2
+ >       2.500000               3
+ >       2.700000               3
+ >     Range limits for typical KINDS:
+ >     1 127
+ >     2 32767
+ >     4 2147483647
+ >     8 9223372036854775807
+ >     Any KIND big enough? ICHECK=          -1
+ >     These are all wrong answers for   1.234566949990144E+019
+ >        0
+ >          0
+ >     -2147483648
+ >      -9223372036854775808
+
+
+
+
+

Standard#

+

FORTRAN 77 , with KIND argument - Fortran 90

+
+
+

See Also#

+

aint(3), +anint(3), +int(3), +selected_int_kind(3), +ceiling(3), +floor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

real#

+
+

Name#

+

real(3) - [TYPE:NUMERIC] Convert to real type

+
+
+

Synopsis#

+
  result = real(x [,kind])
+
+
+
   elemental real(kind=KIND) function real(x,KIND)
+
+    TYPE(kind=**),intent(in) :: x
+    integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • the type of x may be integer, real, or complex; or a BOZ-literal-constant.

  • +
  • kind is a integer initialization expression (a constant expression)

    +
      +
    • If kind is present it defines the kind of the real result

    • +
    • if kind is not present

      +
        +
      • when x is complex the result is a real of the same kind as x.

      • +
      • when x is real or integer the result is a real of default kind

      • +
      +
    • +
    +
  • +
  • a kind designated as ** may be any supported kind for the type

  • +
+
+
+

Description#

+

real(3) converts its argument x to a real type.

+

The real part of a complex value is returned. For complex values this +is similar to the modern complex-part-designator %RE which also +designates the real part of a complex value.

+
      z=(3.0,4.0)     ! if z is a complex value
+      print *, z%re == real(z) ! these expressions are equivalent
+
+
+
+
+

Options#

+
    +
  • +
    x

    An integer, real, or complex value to convert to real.

    +
    +
    +
  • +
  • +
    kind

    When present the value of kind defines the kind of the result.

    +
    +
    +
  • +
+
+
+

Result#

+
    +
  1. real(x) converts x to a default real type if x is an integer +or real variable.

  2. +
  3. real(x) converts a complex value to a real type with the +magnitude of the real component of the input with kind type +parameter the same as x.

  4. +
  5. real(x, kind) is converted to a real type with kind type +parameter kind if x is a complex, integer, or real variable.

  6. +
+
+
+

Examples#

+

Sample program:

+
program demo_real
+use,intrinsic :: iso_fortran_env, only : dp=>real64
+implicit none
+complex              :: zr = (1.0, 2.0)
+doubleprecision      :: xd=huge(3.0d0)
+complex(kind=dp) :: zd=cmplx(4.0e0_dp,5.0e0_dp,kind=dp)
+
+   print *, real(zr), aimag(zr)
+   print *, dble(zd), aimag(zd)
+
+   write(*,*)xd,real(xd,kind=kind(0.0d0)),dble(xd)
+end program demo_real
+
+
+

Results:

+
 1.00000000       2.00000000
+ 4.0000000000000000       5.0000000000000000
+ 1.7976931348623157E+308  1.7976931348623157E+308  1.7976931348623157E+308
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See Also#

+
    +
  • aimag(3) - Imaginary part of complex number

  • +
  • cmplx(3) - Complex conversion function

  • +
  • conjg(3) - Complex conjugate function

  • +
+

Fortran has strong support for complex values, including many intrinsics +that take or produce complex values in addition to algebraic and +logical expressions:

+

abs(3), +acosh(3), +acos(3), +asinh(3), +asin(3), +atan2(3), +atanh(3), +atan(3), +cosh(3), +cos(3), +co_sum(3), +dble(3), +dot_product(3), +exp(3), +int(3), +is_contiguous(3), +kind(3), +log(3), +matmul(3), +precision(3), +product(3), +range(3), +rank(3), +sinh(3), +sin(3), +sqrt(3), +storage_size(3), +sum(3), +tanh(3), +tan(3), +unpack(3),

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

dble#

+
+

Name#

+

dble(3) - [TYPE:NUMERIC] Converstion to double precision real

+
+
+

Synopsis#

+
    result = dble(a)
+
+
+
     elemental doubleprecision function dble(a)
+
+      doubleprecision :: dble
+      TYPE(kind=KIND),intent(in) :: a
+
+
+
+
+

Characteristics#

+
    +
  • a my be integer, real, complex, or a BOZ-literal-constant

  • +
  • the result is a doubleprecision real.

  • +
+
+
+

Description#

+

dble(3) Converts a to double precision real type.

+
+
+

Options#

+
    +
  • +
    a

    a value to convert to a doubleprecision real.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is of type doubleprecision. For complex input, +the returned value has the magnitude and sign of the real component +of the input value.

+
+
+

Examples#

+

Sample program:

+
program demo_dble
+implicit none
+real:: x = 2.18
+integer :: i = 5
+complex :: z = (2.3,1.14)
+   print *, dble(x), dble(i), dble(z)
+end program demo_dble
+
+
+

Results:

+
  2.1800000667572021  5.0000000000000000   2.2999999523162842
+
+
+
+
+

Standard#

+

FORTRAN 77

+
+
+

See also#

+
    +
  • aimag(3) - Imaginary part of complex number

  • +
  • cmplx(3) - Convert values to a complex type

  • +
  • int(3) - Truncate towards zero and convert to integer

  • +
  • nint(3) - Nearest whole number

  • +
  • out_of_range(3) - Whether a value cannot be converted safely.

  • +
  • real(3) - Convert to real type

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

transfer#

+
+

Name#

+

transfer(3) - [TYPE:MOLD] Transfer bit patterns

+
+
+

Synopsis#

+
    result = transfer(source, mold [,size] )
+
+
+
     type(TYPE(kind=KIND)) function transfer(source,mold,size)
+
+      type(TYPE(kind=KIND)),intent(in) :: source(..)
+      type(TYPE(kind=KIND)),intent(in) :: mold(..)
+      integer(kind=**),intent(in),optional :: size
+
+
+
+
+

Characteristics#

+
    +
  • source shall be a scalar or an array of any type.

  • +
  • mold shall be a scalar or an array of any type.

  • +
  • size shall be a scalar of type integer.

  • +
  • result has the same type as mold

  • +
+
+
+

Description#

+

transfer(3) copies the bitwise representation of source in memory +into a variable or array of the same type and type parameters as mold.

+

This is approximately equivalent to the C concept of “casting” one type +to another.

+
+
+

Options#

+
    +
  • +
    source

    Holds the bit pattern to be copied

    +
    +
    +
  • +
  • +
    mold

    the type of mold is used to define the type of the returned +value. In addition, if it is an array the returned value is a +one-dimensional array. If it is a scalar the returned value is a scalar.

    +
    +
    +
  • +
  • +
    size

    If size is present, the result is a one-dimensional array of +length size.

    +
    +
    +
  • +
+

If size is absent but mold is an array (of any size or +shape), the result is a one-dimensional array of the minimum length +needed to contain the entirety of the bitwise representation of source.

+

If size is absent and mold is a scalar, the result is a scalar.

+
+
+

Result#

+

The result has the bit level representation of source.

+

If the bitwise representation of the result is longer than that of +source, then the leading bits of the result correspond to those of +source but any trailing bits are filled arbitrarily.

+

When the resulting bit representation does not correspond to a valid +representation of a variable of the same type as mold, the results are +undefined, and subsequent operations on the result cannot be guaranteed to +produce sensible behavior. For example, it is possible to create logical +variables for which var and .not. var both appear to be true.

+
+
+

Examples#

+

Sample program:

+
program demo_transfer
+use,intrinsic :: iso_fortran_env, only : int32, real32
+integer(kind=int32) :: i = 2143289344
+real(kind=real32)   :: x
+character(len=10)   :: string
+character(len=1)    :: chars(10)
+   x=transfer(i, 1.0)    ! prints "nan" on i686
+   ! the bit patterns are the same
+   write(*,'(b0,1x,g0)')x,x ! create a NaN
+   write(*,'(b0,1x,g0)')i,i
+
+   ! a string to an array of characters
+   string='abcdefghij'
+   chars=transfer(string,chars)
+   write(*,'(*("[",a,"]":,1x))')string
+   write(*,'(*("[",a,"]":,1x))')chars
+end program demo_transfer
+
+
+

Results:

+
   1111111110000000000000000000000 NaN
+   1111111110000000000000000000000 2143289344
+   [abcdefghij]
+   [a] [b] [c] [d] [e] [f] [g] [h] [i] [j]
+
+
+
+
+

Comments#

+

Joe Krahn: Fortran uses molding rather than casting.

+

Casting, as in C, is an in-place reinterpretation. A cast is a device +that is built around an object to change its shape.

+

Fortran transfer(3) reinterprets data out-of-place. It can be +considered molding rather than casting. A mold is a device that +confers a shape onto an object placed into it.

+

The advantage of molding is that data is always valid in the context +of the variable that holds it. For many cases, a decent compiler should +optimize transfer(3) into a simple assignment.

+

There are disadvantages of this approach. It is problematic to define a +union of data types because you must know the largest data object, which +can vary by compiler or compile options. In many cases, an EQUIVALENCE +would be far more effective, but Fortran Standards committees seem +oblivious to the benefits of EQUIVALENCE when used sparingly.

+
+
+

Standard#

+

Fortran 90

+
+
+

See also#

+

****(3)

+

fortran-lang intrinsic descriptions

+
+
+
+

logical#

+
+

Name#

+

logical(3) - [TYPE:LOGICAL] Conversion between kinds of logical values

+
+
+

Synopsis#

+
    result = logical(l [,kind])
+
+
+
     elemental logical(kind=KIND) function logical(l,KIND)
+
+      logical(kind=**),intent(in) :: l
+      integer(kind=**),intent(in),optional :: KIND
+
+
+
+
+

Characteristics#

+
    +
  • a kind designated as ** may be any supported kind for the type

  • +
  • l is of type logical

  • +
  • KIND shall be a scalar integer constant expression. +If KIND is present, the kind type parameter of the result is +that specified by the value of KIND; otherwise, the kind type +parameter is that of default logical.

  • +
+
+
+

Description#

+

logical(3) converts one kind of logical variable to another.

+
+
+

Options#

+
    +
  • +
    l

    The logical value to produce a copy of with kind kind

    +
    +
    +
  • +
  • +
    kind

    indicates the kind parameter of the result. +If not present, the default kind is returned.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value is a logical value equal to l, with a kind +corresponding to kind, or of the default logical kind if kind +is not given.

+
+
+

Examples#

+

Sample program:

+
Linux
+program demo_logical
+! Access array containing the kind type parameter values supported by this
+! compiler for entities of logical type
+use iso_fortran_env, only : logical_kinds
+implicit none
+integer :: i
+
+   ! list kind values supported on this platform, which generally vary
+   ! in storage size as alias declarations
+   do i =1, size(logical_kinds)
+      write(*,'(*(g0))')'integer,parameter :: boolean', &
+      & logical_kinds(i),'=', logical_kinds(i)
+   enddo
+
+end program demo_logical
+
+
+

Results:

+
 > integer,parameter :: boolean1=1
+ > integer,parameter :: boolean2=2
+ > integer,parameter :: boolean4=4
+ > integer,parameter :: boolean8=8
+ > integer,parameter :: boolean16=16
+
+
+
+
+

Standard#

+

Fortran 95 , related ISO_FORTRAN_ENV module - fortran 2009

+
+
+

See Also#

+

int(3), +real(3), +cmplx(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

kind#

+
+

Name#

+

kind(3) - [KIND:INQUIRY] Query kind of an entity

+
+
+

Synopsis#

+
    result = kind(x)
+
+
+
     integer function kind(x)
+
+      type(TYPE,kind=**),intent(in) :: x(..)
+
+
+
+
+

Characteristics#

+
    +
  • x may be of any intrinsic type. It may be a scalar or an array.

  • +
  • the result is a default integer scalar

  • +
+
+
+

Description#

+

kind(x)(3) returns the kind value of the entity x.

+
+
+

Options#

+
    +
  • +
    x

    Value to query the kind of.

    +
    +
    +
  • +
+
+
+

Result#

+

The return value indicates the kind of the argument x.

+

Note that kinds are processor-dependent.

+
+
+

Examples#

+

Sample program:

+
program demo_kind
+implicit none
+integer,parameter :: dc = kind(' ')
+integer,parameter :: dl = kind(.true.)
+
+   print *, "The default character kind is ", dc
+   print *, "The default logical kind is ", dl
+
+end program demo_kind
+
+
+

Results:

+
    The default character kind is            1
+    The default logical kind is            4
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See also#

+ +

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

out_of_range#

+
+

Name#

+

out_of_range(3) - [TYPE:NUMERIC] Whether a value cannot be converted safely.

+
+
+

Synopsis#

+
    result = out_of_range (x, mold [, round])
+
+
+
     elemental logical function(x, mold, round)
+
+      TYPE,kind=KIND),intent(in) :: x
+      TYPE,kind=KIND),intent(in) :: mold
+      logical,intent(in),optional     :: round
+
+
+
+
+

Characteristics#

+
    +
  • x is of type integer or real.

  • +
  • mold is an integer or real scalar.

  • +
  • round is a logical scalar.

  • +
  • the result is a default logical.

  • +
+
+
+

Description#

+

out_of_range(3) determines whether a value x can be converted +safely to a real or integer variable the same type and kind +as mold.

+

For example, if int8 is the kind value for an 8-bit binary integer +type, out_of_range(-128.5, 0_int8) will have the value false and +out_of_range(-128.5, 0_int8, .true.) will have the value .true. +because the value will be truncated when converted to an integer +and -128 is a representable value on a two’s complement machine in +eight bits even though +128 is not.

+
+
+

Options#

+
    +
  • +
    x

    a scalar to be tested for whether +it can be stored in a variable of the type and kind of mold

    +
    +
    +
  • +
  • mold +and kind are queried to determine the characteristics of what +needs to be fit into.

  • +
  • +
    round

    flag whether to round the value of xx before validating it as +an integer value like mold.

    +
    +
    +

    round can only be present if x is of type +real and mold is of type integer.

    +
  • +
+
+
+

Result#

+

From the standard:

+

Case (i): If mold is of type integer, and round is absent or +present with the value false, the result is true +if and only if the value of X is an IEEE infinity or +NaN, or if the integer with largest magnitude that lies +between zero and X inclusive is not representable by +objects with the type and kind of mold.

+

Case (ii): If mold is of type integer, and round is present with +the value true, the result is true if and only +if the value of X is an IEEE infinity or NaN, or +if the integer nearest X, or the integer of greater +magnitude if two integers are equally near to X, is not +representable by objects with the type and kind of mold.

+

Case (iii): Otherwise, the result is true if and only if the value +of X is an IEEE infinity or NaN that is not +supported by objects of the type and kind of mold, +or if X is a finite number and the result of rounding +the value of X (according to the IEEE rounding mode if +appropriate) to the extended model for the kind of mold +has magnitude larger than that of the largest finite +number with the same sign as X that is representable +by objects with the type and kind of mold.

+

NOTE

+

mold is required to be a scalar because the only information +taken from it is its type and kind. Allowing an array mold would +require that it be conformable with x. round is scalar because +allowing an array rounding mode would have severe performance +difficulties on many processors.

+
+
+

Examples#

+

Sample program:

+
program demo_out_of_range
+use, intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
+use, intrinsic :: iso_fortran_env, only : real32, real64, real128
+implicit none
+integer            :: i
+integer(kind=int8) :: i8, j8
+
+    ! compilers are not required to produce an error on out of range.
+    ! here storing the default integers into 1-byte integers
+    ! incorrectly can have unexpected results
+    do i=127,130
+       i8=i
+       j8=-i
+       ! OUT_OF_RANGE(3f) can let you check if the value will fit
+       write(*,*)i8,j8,' might have expected',i,-i, &
+        & out_of_range( i,i8), &
+        & out_of_range(-i,i8)
+    enddo
+    write(*,*) 'RANGE IS ',-1-huge(0_int8),'TO',huge(0_int8)
+    ! the real -128.5 is truncated to -128 and is in range
+    write(*,*) out_of_range (  -128.5, 0_int8)         ! false
+
+    ! the real -128.5 is rounded to -129 and is not in range
+    write(*,*) out_of_range (  -128.5, 0_int8, .true.) ! true
+
+end program demo_out_of_range
+
+
+

Results:

+
  >  127 -127  might have expected         127        -127 F F
+  > -128 -128  might have expected         128        -128 T F
+  > -127  127  might have expected         129        -129 T T
+  > -126  126  might have expected         130        -130 T T
+  > RANGE IS         -128 TO  127
+  > F
+  > T
+
+
+
+
+

Standard#

+

FORTRAN 2018

+
+
+

See also#

+
    +
  • aimag(3) - Imaginary part of complex number

  • +
  • cmplx(3) - Convert values to a complex type

  • +
  • dble(3) - Double conversion function

  • +
  • int(3) - Truncate towards zero and convert to integer

  • +
  • nint(3) - Nearest whole number

  • +
  • real(3) - Convert to real type

  • +
+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

selected_char_kind#

+
+

Name#

+

selected_char_kind(3) - [KIND] Select character kind such as “Unicode”

+
+
+

Synopsis#

+
    result = selected_char_kind(name)
+
+
+
     integer function selected_char_kind(name)
+
+      character(len=*),intent(in) :: name
+
+
+
+
+

Characteristics#

+
    +
  • name is a default character scalar

  • +
  • the result is a default integer scalar

  • +
+
+
+

Description#

+

selected_char_kind(3) returns a kind parameter value for the +character set named name.

+

If a name is not supported, -1 is returned. Otherwise the result is a +value equal to that kind type parameter value.

+

The list of supported names is processor-dependent except for “DEFAULT”.

+
    +
  • If name has the value “DEFAULT”, then the result has a value equal to +that of the kind type parameter of default character. This name is +always supported.

  • +
  • If name has the value “ASCII”, then the result has a value equal +to that of the kind type parameter of ASCII character.

  • +
  • If name has the value “ISO_10646”, then the result has a value equal +to that of the kind type parameter of the ISO 10646 character kind +(corresponding to UCS-4 as specified in ISO/IEC 10646).

  • +
  • If name is a processor-defined name of some other character kind +supported by the processor, then the result has a value equal to that +kind type parameter value. +Pre-defined names include “ASCII” and “ISO_10646”.

  • +
+

The NAME is interpreted without respect to case or trailing blanks.

+
+
+

Options#

+
    +
  • +
    name

    A name to query the processor-dependent kind value of, and/or to determine +if supported. name, interpreted without respect to case or +trailing blanks.

    +
    +
    +

    Currently, supported character sets include “ASCII” and “DEFAULT” and +“ISO_10646” (Universal Character Set, UCS-4) which is commonly known as +“Unicode”. Supported names other than “DEFAULT” are processor dependent.

    +
  • +
+
+
+

Result#

+
+
+

Examples#

+

Sample program:

+
Linux
+program demo_selected_char_kind
+use iso_fortran_env
+implicit none
+
+intrinsic date_and_time,selected_char_kind
+
+! set some aliases for common character kinds
+! as the numbers can vary from platform to platform
+
+integer, parameter :: default = selected_char_kind ("default")
+integer, parameter :: ascii =   selected_char_kind ("ascii")
+integer, parameter :: ucs4  =   selected_char_kind ('ISO_10646')
+integer, parameter :: utf8  =   selected_char_kind ('utf-8')
+
+! assuming ASCII and UCS4 are supported (ie. not equal to -1)
+! define some string variables
+character(len=26, kind=ascii ) :: alphabet
+character(len=30, kind=ucs4  ) :: hello_world
+character(len=30, kind=ucs4  ) :: string
+
+   write(*,*)'ASCII     ',&
+    & merge('Supported    ','Not Supported',ascii /= -1)
+   write(*,*)'ISO_10646 ',&
+    & merge('Supported    ','Not Supported',ucs4 /= -1)
+   write(*,*)'UTF-8     ',&
+    & merge('Supported    ','Not Supported',utf8 /= -1)
+
+   if(default.eq.ascii)then
+       write(*,*)'ASCII is the default on this processor'
+   endif
+
+  ! for constants the kind precedes the value, somewhat like a
+  ! BOZ constant
+   alphabet = ascii_"abcdefghijklmnopqrstuvwxyz"
+   write (*,*) alphabet
+
+   hello_world = ucs4_'Hello World and Ni Hao -- ' &
+                 // char (int (z'4F60'), ucs4)     &
+                 // char (int (z'597D'), ucs4)
+
+  ! an encoding option is required on OPEN for non-default I/O
+   if(ucs4 /= -1 )then
+      open (output_unit, encoding='UTF-8')
+      write (*,*) trim (hello_world)
+   else
+      write (*,*) 'cannot use utf-8'
+   endif
+
+   call create_date_string(string)
+   write (*,*) trim (string)
+
+contains
+
+! The following produces a Japanese date stamp.
+subroutine create_date_string(string)
+intrinsic date_and_time,selected_char_kind
+integer,parameter :: ucs4 = selected_char_kind("ISO_10646")
+character(len=1,kind=ucs4),parameter :: &
+       nen =   char(int( z'5e74' ),ucs4), & ! year
+       gatsu = char(int( z'6708' ),ucs4), & ! month
+       nichi = char(int( z'65e5' ),ucs4)    ! day
+character(len= *, kind= ucs4) string
+integer values(8)
+   call date_and_time(values=values)
+   write(string,101) values(1),nen,values(2),gatsu,values(3),nichi
+ 101 format(*(i0,a))
+end subroutine create_date_string
+
+end program demo_selected_char_kind
+
+
+

Results:

+

The results are very processor-dependent

+
 >  ASCII     Supported
+ >  ISO_10646 Supported
+ >  UTF-8     Not Supported
+ >  ASCII is the default on this processor
+ >  abcdefghijklmnopqrstuvwxyz
+ >  Hello World and Ni Hao -- 你好
+ >  2022年10月15日
+
+
+
+
+

Standard#

+

Fortran 2003

+
+
+

See also#

+

selected_int_kind(3), +selected_real_kind(3)

+

achar(3), +char(3), +ichar(3), +iachar(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

selected_int_kind#

+
+

Name#

+

selected_int_kind(3) - [KIND] Choose integer kind

+
+
+

Synopsis#

+
    result = selected_int_kind(r)
+
+
+
    integer function selected_int_kind(r)
+
+     integer(kind=KIND),intent(in) :: r
+
+
+
+
+

Characteristics#

+
    +
  • r is an integer scalar.

  • +
  • the result is an default integer scalar.

  • +
+
+
+

Description#

+

selected_int_kind(3) return the kind value of the smallest +integer type that can represent all values ranging from -10**r +(exclusive) to 10**r (exclusive). If there is no integer kind +that accommodates this range, selected_int_kind returns -1.

+
+
+

Options#

+
    +
  • +
    r

    The value specifies the required range of powers of ten that need +supported by the kind type being returned.

    +
    +
    +
  • +
+
+
+

Result#

+

The result has a value equal to the value of the kind type parameter +of an integer type that represents all values in the requested range.

+

if no such kind type parameter is available on the processor, the +result is -1.

+

If more than one kind type parameter meets the criterion, the value +returned is the one with the smallest decimal exponent range, unless +there are several such values, in which case the smallest of these +kind values is returned.

+
+
+

Examples#

+

Sample program:

+
program demo_selected_int_kind
+implicit none
+integer,parameter :: k5 = selected_int_kind(5)
+integer,parameter :: k15 = selected_int_kind(15)
+integer(kind=k5) :: i5
+integer(kind=k15) :: i15
+
+    print *, huge(i5), huge(i15)
+
+    ! the following inequalities are always true
+    print *, huge(i5) >= 10_k5**5-1
+    print *, huge(i15) >= 10_k15**15-1
+end program demo_selected_int_kind
+
+
+

Results:

+
  >   2147483647  9223372036854775807
+  >  T
+  >  T
+
+
+
+
+

Standard#

+

Fortran 95

+
+
+

See Also#

+

aint(3), +anint(3), +int(3), +nint(3), +ceiling(3), +floor(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+

selected_real_kind#

+
+

Name#

+

selected_real_kind(3) - [KIND] Choose real kind

+
+
+

Synopsis#

+
    result = selected_real_kind([p] [,r] [,radix] )
+
+
+
    integer function selected_int_kind(r)
+
+     real(kind=KIND),intent(in),optional :: p
+     real(kind=KIND),intent(in),optional :: r
+     real(kind=KIND),intent(in),optional :: radix
+
+
+
+
+

Characteristics#

+
    +
  • p is an integer scalar

  • +
  • r is an integer scalar

  • +
  • radix is an integer scalar

  • +
  • the result is an default integer scalar

  • +
+
+
+

Description#

+

selected_real_kind(3) return the kind value of a real data type with +decimal precision of at least p digits, exponent range of at least +r, and with a radix of radix. That is, if such a kind exists

+
+ it has the decimal precision as returned by **precision**(3) of at
+  least **p** digits.
++ a decimal exponent range, as returned by the function **range**(3)
+  of at least **r**
++ a radix, as returned by the function **radix**(3) , of **radix**,
+
+
+

If the requested kind does not exist, -1 is returned.

+

At least one argument shall be present.

+
+
+

Options#

+
    +
  • +
    p

    the requested precision

    +
    +
    +
  • +
  • +
    r

    the requested range

    +
    +
    +
  • +
  • +
    radix

    the desired radix

    +
    +
    +

    Before Fortran 2008, at least one of the arguments r or p shall +be present; since Fortran 2008, they are assumed to be zero if +absent.

    +
  • +
+
+
+

Result#

+

selected_real_kind returns the value of the kind type parameter of +a real data type with decimal precision of at least p digits, +a decimal exponent range of at least R, and with the requested +radix.

+

If p or r is absent, the result value is the same as if it +were present with the value zero.

+

If the radix parameter is absent, there is no requirement on +the radix of the selected kind and real kinds with any radix can be +returned.

+

If more than one real data type meet the criteria, the kind +of the data type with the smallest decimal precision is returned. If +no real data type matches the criteria, the result is

+
    +
  • +
    -1

    if the processor does not support a real data type with a +precision greater than or equal to p, but the r and radix +requirements can be fulfilled

    +
    +
    +
  • +
  • +
    -2

    if the processor does not support a real type with an +exponent range greater than or equal to r, but p and radix are +fulfillable

    +
    +
    +
  • +
  • +
    -3

    if radix but not p and r requirements are fulfillable

    +
    +
    +
  • +
  • +
    -4

    if radix and either p or r requirements are fulfillable

    +
    +
    +
  • +
  • +
    -5

    if there is no real type with the given radix

    +
    +
    +
  • +
+
+
+

Examples#

+

Sample program:

+
program demo_selected_real_kind
+implicit none
+integer,parameter :: p6 = selected_real_kind(6)
+integer,parameter :: p10r100 = selected_real_kind(10,100)
+integer,parameter :: r400 = selected_real_kind(r=400)
+real(kind=p6) :: x
+real(kind=p10r100) :: y
+real(kind=r400) :: z
+
+   print *, precision(x), range(x)
+   print *, precision(y), range(y)
+   print *, precision(z), range(z)
+end program demo_selected_real_kind
+
+
+

Results:

+
  >            6          37
+  >           15         307
+  >           18        4931
+
+
+
+
+

Standard#

+

Fortran 95 ; with RADIX - Fortran 2008

+
+
+

See Also#

+

precision(3), +range(3), +radix(3)

+

fortran-lang intrinsic descriptions (license: MIT) @urbanjost

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/choose_compiler/index.html b/learn/os_setup/choose_compiler/index.html new file mode 100644 index 000000000000..9aec717595cd --- /dev/null +++ b/learn/os_setup/choose_compiler/index.html @@ -0,0 +1,753 @@ + + + + + + + + + Choosing a compiler — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Choosing a compiler#

+

A comprehensive list of available compilers is provided here. In this guide, we will focus only on those that are free to install and use.

+

Of those listed at the link above, open source and free are GFortran (with OpenCoarrays), Flang, and LFortran. NVIDIA and Intel offer their compilers for free and as of the latest update of this tutorial, NVFortran (NVIDIA) is available only for Linux systems, while Intel oneAPI is available for Linux, Windows and macOS systems. Both are well documented and readers can find detailed information about installing and using them on their websites respectively.

+

In the next chapter, we use GFortran for the tutorial as it is a mature open source compiler. We encourage users to also try other open source and commercial compilers.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/ides/index.html b/learn/os_setup/ides/index.html new file mode 100644 index 000000000000..cafdd24ac0d6 --- /dev/null +++ b/learn/os_setup/ides/index.html @@ -0,0 +1,763 @@ + + + + + + + + + IDEs — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

IDEs#

+

An IDE (Integrated Development Environment) refers to a complete software development environment, where, all those packages that come as external plug-ins in Text-Editors, are already integrated within the software. An IDE is usually optimized towards a specific set of languages. For example it is very common for IDEs to advertise themselves towards either compiled or interpreted languages, or even towards a single language, or depending on the application developed, like scientific or web development. +IDEs are recommended for beginner programmers, since it is possible to start coding with minimum effort after installation. However, it is quite common, in professional environments, individual developers and teams alike, to choose an IDE for large projects because of some unique features that they may offer over a Text-Editor.

+

A list of popular IDEs that provide good Fortran support is provided in alphabetical order:

+
    +
  • AbsoftTools: commercial product, cross-platform, comes with Absoft’s own Fortran compiler.

  • +
  • Code::Blocks: free product, cross-platform and supports multiple compilers. Plenty of tutorials online on how to install it and add a Fortran Compiler. As well as a recent presentation, here, of its capabilities and future prospects at the International Fortran Conference 2020 by its main developer.

  • +
  • Eclipse-Photran Photran is an IDE and refactoring tool for Fortran based on Eclipse and the C/C++ Development Tools. A free product, cross-platform and supports multiple compilers.

  • +
  • Geany: a free product, cross platform and supports multiple compilers.

  • +
  • NAG Fortran Builder is a commercial product, available in Windows and MacOS and supports NAG’s own Fortran Compiler.

  • +
  • Plato is a commercial product, cross-platform, comes with Silverfrost’s Fortran FTN95 own Fortran compiler.

  • +
  • SimplyFortran is a commercial product, cross-platform with support of the GNU Fortran compiler.

  • +
  • Visual Studio its Community Edition 2019 is a free product, available in Windows and macOS and supports only Intel’s Fortran compiler, now bundled with many other free-to-use HPC tools under Intel oneAPI.

  • +
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/index.html b/learn/os_setup/index.html new file mode 100644 index 000000000000..cebf9cbfa41a --- /dev/null +++ b/learn/os_setup/index.html @@ -0,0 +1,762 @@ + + + + + + + + + Setting up your OS — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +



+
A beginner's tutorial on the software that needs to be installed to start with Fortran development
+

+
+

Authors: Stavros Meskos, Laurence Kedward, Arjen Markus, Ondřej Čertík, Milan Curcic

+

Last update: 16-Feb-2021

+
+
+

Setting up your OS#

+

In this mini-book we address the very first problem that many new Fortran programmers encounter. Before everything, you will need to choose a compiler and install it. Then you will need a text editor or perhaps an IDE (Integrated Development Environment). There are many options, most of them available in all major OSs (operating systems). However, the process to install and configure them greatly differs between Windows, Linux, and macOS. There are several Fortran compilers. Here, we pick those that meet certain criteria and provide a guide on how to install them in all the aforementioned OSs. A list of popular text editors and IDEs and information on how to choose between them is presented as well.

+
+

Note

+

If you have already set up your environment, you may skip this tutorial and move forward with the Quickstart Fortran Tutorial to start coding your first Hello World program or with the Building programs mini-book to understand how a compiler works.

+
+
+

The choice of text editors and IDEs has been controversial among the developers. What you choose is a matter of personal taste. Every solution comes with its own pros and cons. For that reason, in this guide, we will not push the reader towards one or another direction. We will, however, present a list of the most popular tools.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/install_gfortran/index.html b/learn/os_setup/install_gfortran/index.html new file mode 100644 index 000000000000..79781f56be7c --- /dev/null +++ b/learn/os_setup/install_gfortran/index.html @@ -0,0 +1,956 @@ + + + + + + + + + Installing GFortran — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Installing GFortran#

+

GFortran is the name of the GNU Fortran project. The main wiki page offers many helpful links about GFortran, as well as Fortran in general. In this guide, the installation process for GFortran on Windows, Linux, macOS and OpenBSD is presented in a beginner-friendly format based on the information from GFortranBinaries.

+
+

Windows#

+

Three sources provide quick and easy way to install GFortran compiler on Windows:

+
    +
  1. http://www.equation.com, provides 32 and 64-bit x86 +executables for GCC version 12.1.

  2. +
  3. TDM GCC, provides 32 and 64-bit x86 executables for GCC version 10.3.

  4. +
  5. MinGW-w64 provides a 64-bit x86 executable for GCC version 12.2.

  6. +
+

In all the above choices, the process is straightforward—just download the installer and follow the installation wizard.

+
+

Unix-like development on Windows#

+

For those familiar with a unix-like development environment, several emulation options are available on Windows each of which provide packages for gfortran:

+
    +
  • Cygwin: A runtime environment that provides POSIX compatibility to Windows.

  • +
  • MSYS2: A collection of Unix-like development tools, based on modern Cygwin and MinGW-w64.

  • +
  • Windows Subsystem for Linux (WSL): An official compatibility layer for running Linux binary executables on Windows. With Windows Subsystem for Linux GUI one can run text editors and other graphical programs.

  • +
+

All of the above approaches provide access to common shells such as bash and development tools including GNU coreutils, Make, CMake, autotools, git, grep, sed, awk, ssh, etc.

+

We recommend the WSL environment for those looking for a Unix-like development environment on Windows.

+
+
+
+

Linux#

+
+

Debian-based (Debian, Ubuntu, Mint, etc…)#

+

Check whether you have gfortran already installed

+
which gfortran
+
+
+

If nothing is returned then gfortran is not installed. +To install gfortran type:

+
sudo apt install gfortran
+
+
+

to check what version was installed type:

+
gfortran --version
+
+
+

You can install multiple versions up to version 10 (on Ubuntu 22.04) by typing the version number immediately after “gfortran”, e.g.:

+
sudo apt install gfortran-8
+
+
+

To install newer versions on older Ubuntu releases, you will first need to add the following repository, update, and then install:

+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
+sudo apt update
+sudo apt install gfortran-10
+
+
+

Finally, you can switch between different versions or set the default one with the update-alternatives (see manpage). There are many online tutorials on how to use this feature. A well structured one using as an example C and C++ can be found here, you can apply the same logic by replacing either gcc or g++ with gfortran.

+
+
+

RPM-based (Red Hat Enterprise Linux, CentOS, Fedora, openSUSE)#

+
sudo yum install gcc-gfortran
+
+
+

Since Fedora 22 and Red Hat Enterprise Linux 8, dnf is the default package manager:

+
sudo dnf install gcc-gfortran
+
+
+
+
+

Arch-based (Arch Linux, EndeavourOS, Manjaro, etc…)#

+
sudo pacman -S gcc-fortran
+
+
+
+
+
+

macOS#

+
+

Xcode#

+

If you have Xcode installed, open a terminal window and type:

+
xcode-select --install
+
+
+
+
+

Binaries#

+

Go to fxcoudert/gfortran-for-macOS to directly install binaries.

+
+
+

Homebrew#

+
brew install gcc
+
+
+
+
+

Fink#

+

GNU-gcc Package link

+
+
+

MacPorts#

+

Search for available gcc versions:

+
port search gcc
+
+
+

Install a gcc version:

+
sudo port install gcc10
+
+
+
+
+
+

OpenBSD#

+
pkg_add g95
+
+
+

On OpenBSD, the GFortran executable is named egfortran. To test it, type:

+
egfortran -v
+
+
+
+
+
+

OpenCoarrays#

+

OpenCoarrays is an open-source software project that produces an application binary interface (ABI) used by the GNU Compiler Collection (GCC) Fortran front-end to build executable programs that leverage the parallel programming features of Fortran 2018. Since OpenCoarrays is not a separate compiler, we include it here, under gfortran.

+

While with gfortran you can compile perfectly valid code using coarrays, the generated binaries will only run in a single image (image is a Fortran term for a parallel process), that is, in serial mode. OpenCoarrays allows running code in parallel on shared- and distributed-memory machines, similar to MPI:

+
cafrun -n <number_of_images> <executable_name>
+
+
+

The process of installation is provided in a clear and comprehensive manner on the official site.

+

We emphasize that native installation on Windows is not possible. It is only possible through WSL.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/text_editors/index.html b/learn/os_setup/text_editors/index.html new file mode 100644 index 000000000000..5d85244aa773 --- /dev/null +++ b/learn/os_setup/text_editors/index.html @@ -0,0 +1,825 @@ + + + + + + + + + Text Editors — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + + + + +
+ + + + +
+ +
+ +
+

Text Editors#

+

After you have installed your compiler, you will need a text editor to write your code. Any text editor can serve this purpose, even the built-in Notepad on Windows. However, there are specialized editors for programming languages. These editors come with many useful features like auto-complete, syntax-highlighting, auto-indentation, brace-matching, and many more, with few of them pre-installed and the majority in form of external plug-ins. This means that by default these features are not installed in the editor, but it’s up to you to search for them through a package manager and install and configure them manually.

+

Here’s a list of the most popular text editors that support Fortran syntax, in alphabetical order:

+ +

A comprehensive list with more choices is provided in fortranwiki.org.

+

Things to consider before choosing a text editor:

+
    +
  • Ergonomics: This is purely subjective and concerns how easy, uninterrupted the UI (User Interface) feels to the developer while using the editor.

  • +
  • Extensibility: As mentioned above, text editors come with many features as external packages. The variety, the installation process, the documentation, and user-friendliness of the packages all fall under this category.

  • +
  • Speed: With how powerful modern hardware can be, the speed of editors is becoming of minor importance. However, for the less powerful systems, you may want to consider this as well. Heavyweight editors may impact the writing performance. For example, you can expect Atom and VSCode to run slower than the lightweight editors like Vim or Emacs.

  • +
  • Learning curve: Last but not least, new users should consider how easy it is to get used to a new editor. Vim and Emacs have a steep learning curve and are notoriously difficult for newcomers. They offer a uniquely different experience than any other editor by forcing you to use the keyboard for all editing tasks.

  • +
+
+

Configuring VS Code#

+

With the editor opened, at the main UI, at the buttoned-column on the left, there is a four-square-shaped icon to open the Marketplace for extensions. +Install Modern Fortran for syntax highlighting, linting and Language Server support and formatting.

+
+

Additional Tools#

+

The following extensions are not essential but most users might find them useful:

+
    +
  • GitLens for advanced Git visualization and operations.

  • +
  • CMake for full-featured CMake integration in VS Code.

  • +
  • Remote Development for working with containers, on a remote machines, or in the Windows Subsystem for Linux (WSL).

  • +
  • Even Better TOML by tamasfe. For Fortran developers that are using the new fpm Fortran Package Manager, a TOML language support might come in handy.

  • +
+
+
+
+

Configuring SublimeText#

+

A well structured gist that provides instructions on how to set up SublimeText for Fortran developement is given here.

+
+
+

Configuring Atom#

+

Atom’s configuration process is similar to VSCode one. At the main interface, if the Welcome Guide page is already opened for you, just click the Install a Package option, otherwise you can find the same option through the navigation bar at the top by clicking Packages. In doing so a new page under Settings opens where you can just start typing the package you want to install.

+

One package that includes many Fortran features is IDE-FORTRAN by hansec. It needs the following packages to be installed:

+ +

Additionally just like in VSCode it needs Python and Fortran Language Server to be installed.

+

For version control a very popular package is Git-Plus by akonwi.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/os_setup/tips/index.html b/learn/os_setup/tips/index.html new file mode 100644 index 000000000000..b81eaf19dcf3 --- /dev/null +++ b/learn/os_setup/tips/index.html @@ -0,0 +1,759 @@ + + + + + + + + + Smart Tips — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Smart Tips#

+

To conclude, we give a few tips that may help you to choose a compiler and an editor or an IDE.

+
    +
  • Check this site for a comprehensive comparison of Fortran compilers.

  • +
  • Since NVFortran version 17.1, the support for compute capability 2.0 (Fermi) and lower has been removed. This is important because, at any time, only the latest compiler version is free to download. Users with older GPUs will not be able to run CUDA Fortran with the current (20.7) or future versions. Read this wiki to find your GPU’s compute capability and cross-check with the latest CUDA SDK that supports it.

  • +
  • There are many online Fortran compilers. These are websites that offer a basic text editor and allow you to compile and run your code on a remote server. They are particularly useful for quick prototyping and testing. Although we promised neutrality, we recommend that you check out the open-source and free Compiler Explorer, an amazing tool with unique features.

  • +
  • Arguably the most popular text editor, according to recent online surveys, is the Visual Studio Code, developed by Microsoft.

  • +
  • The most popular free IDEs are the Code::Blocks and Geany. Many commercial IDEs give up to 30 days of free trial. Keep in mind that the prices of commercial IDEs may vary, and some may be quite affordable. Finally, if you are a student, an open-source developer, or a …hobbyist Fortraner do not hesitate to contact those companies and request a discount. There have been cases, e.g., in r/fortran, where representatives, from at least one company, have offered discount codes to individuals looking for affordable complete solutions (IDE + compiler).

  • +
  • Finally, please join us on Fortran Discourse and do not hesitate to post your questions and request for further information.

  • +
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/arrays_strings/index.html b/learn/quickstart/arrays_strings/index.html new file mode 100644 index 000000000000..d6ca9be9bfc1 --- /dev/null +++ b/learn/quickstart/arrays_strings/index.html @@ -0,0 +1,953 @@ + + + + + + + + + Arrays and strings — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Arrays and strings#

+

More often than not, we need to store and operate on long lists of numbers as opposed to just the single scalar variables +that we have been using so far; in computer programming such lists are called arrays.

+

Arrays are multidimensional variables that contain more than one value +where each value is accessed using one or more indices.

+
+

Arrays in Fortran are one-based by default; this means +that the first element along any dimension is at index 1.

+
+
+
+

Array declaration#

+

We can declare arrays of any type. There are two common notations for declaring array variables: +using the dimension attribute or by appending the array dimensions in parentheses to the variable name.

+

Example: static array declaration

+
program arrays
+  implicit none
+
+  ! 1D integer array
+  integer, dimension(10) :: array1
+
+  ! An equivalent array declaration
+  integer :: array2(10)
+
+  ! 2D real array
+  real, dimension(10, 10) :: array3
+
+  ! Custom lower and upper index bounds
+  real :: array4(0:9)
+  real :: array5(-5:5)
+
+end program arrays
+
+
+
+

Array slicing#

+

A powerful feature of the Fortran language is its built-in support for array operations; +we can perform operations on all or part of an array using array slicing notation:

+

Example: array slicing

+
program array_slice
+  implicit none
+
+  integer :: i
+  integer :: array1(10)  ! 1D integer array of 10 elements
+  integer :: array2(10, 10)  ! 2D integer array of 100 elements
+
+  array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  ! Array constructor
+  array1 = [(i, i = 1, 10)]  ! Implied do loop constructor
+  array1(:) = 0  ! Set all elements to zero
+  array1(1:5) = 1  ! Set first five elements to one
+  array1(6:) = 1  ! Set all elements after five to one
+
+  print *, array1(1:10:2)  ! Print out elements at odd indices
+  print *, array2(:,1)  ! Print out the first column in a 2D array
+  print *, array1(10:1:-1)  ! Print an array in reverse
+
+end program array_slice
+
+
+
+

Fortran arrays are stored in column-major order; the first +index varies fastest.

+
+
+
+

Allocatable (dynamic) arrays#

+

So far we have specified the size of our array in our program code—this +type of array is known as a static array since its size is fixed when +we compile our program.

+

Quite often, we do not know how big our array needs to be until we run our program, for example, if we are reading data from a file of unknown size.

+

For this problem, we need allocatable arrays. +These are allocated while the program is running once we know how big the array needs to be.

+

Example: allocatable arrays

+
program allocatable
+  implicit none
+
+  integer, allocatable :: array1(:)
+  integer, allocatable :: array2(:,:)
+
+  allocate(array1(10))
+  allocate(array2(10,10))
+
+  ! ...
+
+  deallocate(array1)
+  deallocate(array2)
+
+end program allocatable
+
+
+

Allocatable local arrays are deallocated automatically +when they go out of scope.

+
+
+

Character strings#

+

Example: static character string

+
program string
+  implicit none
+
+  character(len=4) :: first_name
+  character(len=5) :: last_name
+  character(10) :: full_name
+
+  first_name = 'John'
+  last_name = 'Smith'
+
+  ! String concatenation
+  full_name = first_name//' '//last_name
+
+  print *, full_name
+
+end program string
+
+
+

Example: allocatable character string

+
program allocatable_string
+  implicit none
+
+  character(:), allocatable :: first_name
+  character(:), allocatable :: last_name
+
+  ! Explicit allocation statement
+  allocate(character(4) :: first_name)
+  first_name = 'John'
+
+  ! Allocation on assignment
+  last_name = 'Smith'
+
+  print *, first_name//' '//last_name
+
+end program allocatable_string
+
+
+
+
+

Array of strings#

+

An array of strings can be expressed in Fortran as an array of character variables. +All elements in a character array have equal length. +However, strings of varying lengths can be provided as input to the array constructor, as shown in the example below. +They will be truncated or right-padded with spaces if they are longer or shorter, respectively, than the declared length of the character array. +Finally, we use the intrinsic function trim to remove any excess spaces when printing the values to the standard output.

+

Example: string array

+
program string_array
+  implicit none
+  character(len=10), dimension(2) :: keys, vals
+
+  keys = [character(len=10) :: "user", "dbname"]
+  vals = [character(len=10) :: "ben", "motivation"]
+
+  call show(keys, vals)
+
+  contains
+
+  subroutine show(akeys, avals)
+    character(len=*), intent(in) :: akeys(:), avals(:)
+    integer                      :: i
+
+    do i = 1, size(akeys)
+      print *, trim(akeys(i)), ": ", trim(avals(i))
+    end do
+
+  end subroutine show
+
+end program string_array
+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/derived_types/index.html b/learn/quickstart/derived_types/index.html new file mode 100644 index 000000000000..1113238c4a80 --- /dev/null +++ b/learn/quickstart/derived_types/index.html @@ -0,0 +1,1087 @@ + + + + + + + + + Derived Types — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Derived Types#

+

As discussed previously in Variables, there are five built-in data types in Fortran. A derived type is a special form of data type that can encapsulate other built-in types as well as other derived types. It could be considered equivalent to struct in the C and C++ programming languages.

+
+

A quick take on derived types#

+

Here’s an example of a basic derived type:

+
type :: t_pair
+  integer :: i
+  real :: x
+end type
+
+
+

The syntax to create a variable of type t_pair and access its members is:

+
! Declare
+type(t_pair) :: pair
+! Initialize
+pair%i = 1
+pair%x = 0.5
+
+
+
+

The percentage symbol % is used to access the members of a derived type.

+
+

In the above snippet, we declared an instance of a derived type and initialized its members explicitly. +You can also initialize derived type members by invoking the derived type constructor.

+

Example using the derived type constructor:

+
pair = t_pair(1, 0.5)      ! Initialize with positional arguments
+pair = t_pair(i=1, x=0.5)  ! Initialize with keyword arguments
+pair = t_pair(x=0.5, i=1)  ! Keyword arguments can go in any order
+
+
+

Example with default initialization:

+
type :: t_pair
+  integer :: i = 1
+  real :: x = 0.5
+end type
+
+type(t_pair) :: pair
+pair = t_pair()       ! pair%i is 1, pair%x is 0.5
+pair = t_pair(i=2)    ! pair%i is 2, pair%x is 0.5
+pair = t_pair(x=2.7)  ! pair%i is 1, pair%x is 2.7
+
+
+
+
+

Derived types in detail#

+

The full syntax of a derived type with all optional properties is presented below:

+
type [,attribute-list] :: name [(parameterized-declaration-list)]
+  [parameterized-definition-statements]
+  [private statement or sequence statement]
+  [member-variables]
+contains
+  [type-bound-procedures]
+end type
+
+
+
+
+

Options to declare a derived type#

+

attribute-list may refer to the following:

+
    +
  • access-type that is either public or private

  • +
  • bind(c) offers interoperability with C programming language

  • +
  • extends(parent), where parent is the name of a previously declared derived type from which the current derived type will inherit all its members and functionality

  • +
  • abstract – an object oriented feature that is covered in the advanced programming tutorial

  • +
+
+

If the attribute bind(c) or the statement sequence is used, then a derived type cannot have the attribute extends and vice versa.

+
+

The sequence attribute may be used only to declare that the following members should be accessed in the same order as they are defined within the derived type.

+

Example with sequence:

+
type :: t_pair
+  sequence
+  integer :: i
+  real :: x
+end type
+! Initialize
+type(t_pair) :: pair
+pair = t_pair(1, 0.5)
+
+
+
+

The use of the statement sequence presupposes that the data types defined below are neither of allocatable nor of pointer type. Furthermore, it does not imply that these data types will be stored in memory in any particular form, i.e., there is no relation to the contiguous attribute.

+
+

The access-type attributes public and private, if used, declare that all member-variables declared below will be automatically assigned the attribute accordingly.

+

The attribute bind(c) is used to achieve compatibility between Fortran’s derived type and C’s struct.

+

Example with bind(c):

+
module f_to_c
+  use iso_c_bindings, only: c_int
+  implicit none
+
+  type, bind(c) :: f_type
+    integer(c_int) :: i
+  end type
+
+end module f_to_c
+
+
+

matches the following C struct type:

+
struct c_struct {
+  int i;
+};
+
+
+
+

A fortran derived type with the attribute bind(c) cannot have the sequence and extends attributes. Furthermore it cannot contain any Fortran pointer or allocatable types.

+
+

parameterized-declaration-list is an optional feature. If used, then the parameters must be listed in place of [parameterized-definition-statements] and must be either len or kind parameters or both.

+

Example of a derived type with parameterized-declaration-list and with the attribute public:

+
module m_matrix
+ implicit none
+ private
+
+ type, public :: t_matrix(rows, cols, k)
+   integer, len :: rows, cols
+   integer, kind :: k = kind(0.0)
+   real(kind=k), dimension(rows, cols) :: values
+ end type
+
+end module m_matrix
+
+program test_matrix
+ use m_matrix
+ implicit none
+
+ type(t_matrix(rows=5, cols=5)) :: m
+
+end program test_matrix
+
+
+
+

In this example the parameter k has already been assigned a default value of kind(0.0) (single-precision floating-point). Therefore, it can be omitted, as is the case here in the declaration inside the main program.

+
+
+

By default, derived types and their members are public. However, in this example, the attribute private is used at the beginning of the module. Therefore, everything within the module will be by default private unless explicitly declared as public. If the type t_matrix was not given the attribute public in the above example, then the compiler would throw an error inside program test.

+
+

The attribute extends was added in the F2003 standard and introduces an important feature of the object oriented paradigm (OOP), namely inheritance. It allows code reusability by letting child types derive from extensible parent types: type, extends(parent) :: child. Here, child inherits all the members and functionality from type :: parent.

+

Example with the attribute extends:

+
module m_employee
+  implicit none
+  private
+  public t_date, t_address, t_person, t_employee
+  ! Note another way of using the public attribute:
+  ! gathering all public data types in one place.
+
+  type :: t_date
+    integer :: year, month, day
+  end type
+
+  type :: t_address
+    character(len=:), allocatable :: city, road_name
+    integer :: house_number
+  end type
+
+  type, extends(t_address) :: t_person
+    character(len=:), allocatable :: first_name, last_name, e_mail
+  end type
+
+  type, extends(t_person)  :: t_employee
+    type(t_date) :: hired_date
+    character(len=:), allocatable :: position
+    real :: monthly_salary
+  end type
+
+end module m_employee
+
+program test_employee
+  use m_employee
+  implicit none
+  type(t_employee) :: employee
+
+  ! Initialization
+
+  ! t_employee has access to type(t_date) members not because of extends
+  ! but because a type(t_date) was declared within t_employee.
+  employee%hired_date%year  = 2020
+  employee%hired_date%month = 1
+  employee%hired_date%day   = 20
+
+  ! t_employee has access to t_person, and inherits its members due to extends.
+  employee%first_name = 'John'
+  employee%last_name  = 'Doe'
+
+  ! t_employee has access to t_address, because it inherits from t_person,
+  ! which in return inherits from t_address.
+  employee%city         = 'London'
+  employee%road_name    = 'BigBen'
+  employee%house_number = 1
+
+  ! t_employee has access to its defined members.
+  employee%position       = 'Intern'
+  employee%monthly_salary = 0.0
+
+end program test_employee
+
+
+
+
+

Options to declare members of a derived type#

+

[member-variables] refers to the declaration of all the member data types. These data types can be of any built-in data type, and/or of other derived types, as already showcased in the above examples. However, member-variables can have their own extensive syntax, in form of: +type [,member-attributes] :: name[attr-dependent-spec][init]

+

type: any built-in type or other derived type

+

member-attributes (optional):

+
    +
  • public or private access attributes

  • +
  • protected access attribute

  • +
  • allocatable with or without dimension to specify a dynamic array

  • +
  • pointer, codimension, contiguous, volatile, asynchronous

  • +
+

Examples of common cases:

+
type :: t_example
+  ! 1st case: simple built-in type with access attribute and [init]
+  integer, private :: i = 0
+  ! private hides it from use outside of the t_example's scope.
+  ! The default initialization [=0] is the [init] part.
+
+  ! 2nd case: protected
+  integer, protected :: i
+  ! In contrary to private, protected allows access to i assigned value outside of t_example
+  ! but is not definable, i.e. a value may be assigned to i only within t_example.
+
+  ! 3rd case: dynamic 1-D array
+  real, allocatable, dimension(:) :: x
+  ! the same as
+  real, allocatable :: x(:)
+  ! This parentheses' usage implies dimension(:) and is one of the possible [attr-dependent-spec].
+end type
+
+
+
+

The following attributes: pointer, codimension, contiguous, volatile, asynchronous are advanced features that will not be addressed in the Quickstart tutorial. However, they are presented here, in order for the readers to know that these features do exist and be able to recognize them. These features will be covered in detail in the upcoming Advanced programing mini-book.

+
+
+
+

Type-bound procedures#

+

A derived type can contain functions or subroutines that are bound to it. We’ll refer to them as type-bound procedures. Type-bound procedures follow the contains statement that, in turn, follows all member variable declarations.

+
+

It is impossible to describe type-bound procedures in full without delving into OOP features of modern Fortran. For now we’ll focus on a simple example to show their basic use.

+
+

Here’s an example of a derived type with a basic type-bound procedure:

+
module m_shapes
+  implicit none
+  private
+  public t_square
+
+  type :: t_square
+  real :: side
+  contains
+    procedure :: area  ! procedure declaration
+  end type
+
+contains
+
+  ! Procedure definition
+  real function area(self) result(res)
+    class(t_square), intent(in) :: self
+    res = self%side**2
+  end function
+
+end module m_shapes
+
+program main
+  use m_shapes
+  implicit none
+
+  ! Variables' declaration
+  type(t_square) :: sq
+  real :: x, side
+
+  ! Variables' initialization
+  side = 0.5
+  sq%side = side
+
+  x = sq%area()
+  ! self does not appear here, it has been passed implicitly
+
+  ! Do stuff with x...
+
+end program main
+
+
+

What is new:

+
    +
  • self is an arbitrary name that we chose to represent the instance of the derived type t_square inside the type-bound function. This allows us to access its members and to automatically pass it as an argument when we invoke a type-bound procedure.

  • +
  • We now use class(t_square) instead of type(t_square) in the interface of the area function. This allows us to invoke the area function with any derived type that extends t_square. The keyword class introduces the OOP feature polymorphism.

  • +
+

In the above example, the type-bound procedure area is defined as a function and can be invoked only in an expression, for example x = sq%area() or print *, sq%area(). If you define it instead as a subroutine, you can invoke it from its own call statement:

+
! Change within module
+contains
+  subroutine area(self, x)
+    class(t_square), intent(in) :: self
+    real, intent(out) :: x
+    x = self%side**2
+  end subroutine
+
+! ...
+
+! Change within main program
+call sq%area(x)
+
+! Do stuff with x...
+
+
+

In contrast to the example with the type-bound function, we now have two arguments:

+
    +
  • class(t_square), intent(in) :: self – the instance of the derived type itself

  • +
  • real, intent(out) :: x – used to store the calculated area and return to the caller

  • +
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/hello_world/index.html b/learn/quickstart/hello_world/index.html new file mode 100644 index 000000000000..20cb379d1e4e --- /dev/null +++ b/learn/quickstart/hello_world/index.html @@ -0,0 +1,826 @@ + + + + + + + + + Hello world — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Hello world#

+

In this part of the tutorial, we will write our first Fortran program: +the ubiquitous “Hello, World!” example.

+

However, before we can write our program, we need to ensure that we have +a Fortran compiler set up.

+
+

Fortran is a compiled language, which means that, once written, the source code must be passed through a +compiler to produce a machine executable that can be run.

+
+
+
+

Compiler setup#

+

In this tutorial, we’ll work with the free and open source +GNU Fortran compiler (gfortran), +which is part of the +GNU Compiler Collection (GCC).

+

To install gfortran on Linux, use your system package manager. +On macOS, you can install gfortran using Homebrew or MacPorts. +On Windows, you can get native binaries here.

+

To check if you have gfortran setup correctly, open a terminal and run the following command:

+
$> gfortran --version
+
+
+

this should output something like:

+
GNU Fortran 7.5.0
+Copyright (C) 2017 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+
+

Hello world#

+

Once you have set up your compiler, open a new file in your favourite code editor and enter the following:

+
program hello
+  ! This is a comment line; it is ignored by the compiler
+  print *, 'Hello, World!'
+end program hello
+
+
+

Having saved your program to hello.f90, compile at the command line with:

+
$> gfortran hello.f90 -o hello
+
+
+
+

.f90 is the standard file extension for modern Fortran source files. +The 90 refers to the first modern Fortran standard in 1990.

+
+

To run your compiled program:

+
$> ./hello
+Hello, World!
+
+
+

Congratulations, you’ve written, compiled and run your first Fortran program! +In the next part of this tutorial, we will introduce variables for storing data.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/index.html b/learn/quickstart/index.html new file mode 100644 index 000000000000..22eb0ee46b1d --- /dev/null +++ b/learn/quickstart/index.html @@ -0,0 +1,753 @@ + + + + + + + + + Quickstart tutorial — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Quickstart tutorial#

+

This quickstart tutorial gives an overview of the Fortran programming language +and its syntax for common structured programming concepts including: +types, variables, arrays, control flow and functions.

+

The contents of this tutorial are shown in the navigation bar on the left with the current page highlighted bold.

+

Use the Next button at the bottom to start the tutorial with a Hello World example.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/operators_control_flow/index.html b/learn/quickstart/operators_control_flow/index.html new file mode 100644 index 000000000000..695dcd861c7f --- /dev/null +++ b/learn/quickstart/operators_control_flow/index.html @@ -0,0 +1,1080 @@ + + + + + + + + + Operators and flow control — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Operators and flow control#

+

One of the powerful advantages of computer algorithms, compared to simple mathematical formulae, +comes in the form of program branching whereby the program can decide which instructions to +execute next based on a logical condition.

+

There are two main forms of controlling program flow:

+
    +
  • Conditional (if): choose program path based on a boolean (true or false) value

  • +
  • Loop: repeat a portion of code multiple times

  • +
+
+
+

Logical operators#

+

Before we use a conditional branching operator, we need to be able to form +a logical expression.

+

To form a logical expression, the following set of relational operators are available:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Operator  

Alternative  

Description

==

.eq.

Tests for equality of two operands

/=

.ne.

Test for inequality of two operands

>

.gt.

Tests if left operand is strictly greater than right operand

<

.lt.

Tests if left operand is strictly less than right operand

>=

.ge.

Tests if left operand is greater than or equal to right operand

<=

.le.

Tests if left operand is less than or equal to right operand

+
+

as well as the following logical operators:

+ + + + + + + + + + + + + + + + + + + + + + + +

Operator  

Description

.and.

TRUE if both left and right operands are TRUE

.or.

TRUE if either left or right or both operands are TRUE

.not.

TRUE if right operand is FALSE

.eqv.

TRUE if left operand has same logical value as right operand

.neqv.

TRUE if left operand has the opposite logical value as right operand

+
+
+

Conditional construct (if)#

+

In the following examples, a conditional if construct is used to print out a +message to describe the nature of the angle variable:

+

Example: single branch if

+
if (angle < 90.0) then
+  print *, 'Angle is acute'
+end if
+
+
+

In this first example, the code within the if construct is only executed if the +test expression (angle < 90.0) is true.

+
+

Tip

+

It is good practice to indent code within constructs such as if and do +to make code more readable.

+
+

We can add an alternative branch to the construct using the else keyword:

+

Example: two-branch if-else

+
if (angle < 90.0) then
+  print *, 'Angle is acute'
+else
+  print *, 'Angle is obtuse'
+end if
+
+
+

Now there are two branches in the if construct, but only one branch is executed depending +on the logical expression following the if keyword.

+

We can actually add any number of branches using else if to specify more conditions:

+

Example: multi-branch if-else if-else

+
if (angle < 90.0) then
+  print *, 'Angle is acute'
+else if (angle < 180.0) then
+  print *, 'Angle is obtuse'
+else
+  print *, 'Angle is reflex'
+end if
+
+
+

When multiple conditional expressions are used, each conditional expression is tested only if none of the previous +expressions have evaluated to true.

+
+
+

Loop constructs (do)#

+

In the following example, a do loop construct is used to print out the numbers in +a sequence. +The do loop has an integer counter variable which is used to track which iteration of the loop +is currently executing. In this example we use a common name for this counter variable: i.

+

When we define the start of the do loop, we use our counter variable name followed by an equals (=) sign +to specify the start value and final value of our counting variable.

+

Example: do loop

+
integer :: i
+
+do i = 1, 10
+  print *, i
+end do
+
+
+

Example: do loop with skip

+
integer :: i
+
+do i = 1, 10, 2
+  print *, i  ! Print odd numbers
+end do
+
+
+
+

Conditional loop (do while)#

+

A condition may be added to a do loop with the while keyword. The loop will be executed while the condition given +in while() evaluates to .true..

+

Example: do while() loop

+
integer :: i
+
+i = 1
+do while (i < 11)
+  print *, i
+  i = i + 1
+end do
+! Here i = 11
+
+
+
+
+

Loop control statements (exit and cycle)#

+

Most often than not, loops need to be stopped if a condition is met. Fortran provides two executable statements to deal +with such cases.

+

exit is used to quit the loop prematurely. It is usually enclosed inside an if.

+

Example: loop with exit

+
integer :: i
+
+do i = 1, 100
+  if (i > 10) then
+    exit  ! Stop printing numbers
+  end if
+  print *, i
+end do
+! Here i = 11
+
+
+

On the other hand, cycle skips whatever is left of the loop and goes into the next cycle.

+

Example: loop with cycle

+
integer :: i
+
+do i = 1, 10
+  if (mod(i, 2) == 0) then
+      cycle  ! Don't print even numbers
+  end if
+  print *, i
+end do
+
+
+
+

Note

+

When used within nested loops, the cycle and exit statements operate on the innermost loop.

+
+
+
+

Nested loop control: tags#

+

A recurring case in any programming language is the use of nested loops. Nested loops refer to loops that exist within another loop. Fortran allows the programmer to tag or name each loop. If loops are tagged, there are two potential benefits:

+
    +
  1. The readability of the code may be improved (when the naming is meaningful).

  2. +
  3. exit and cycle may be used with tags, which allows for very fine-grained control of the loops.

  4. +
+

Example: tagged nested loops

+
integer :: i, j
+
+outer_loop: do i = 1, 10
+  inner_loop: do j = 1, 10
+    if ((j + i) > 10) then  ! Print only pairs of i and j that add up to 10
+      cycle outer_loop  ! Go to the next iteration of the outer loop
+    end if
+    print *, 'I=', i, ' J=', j, ' Sum=', j + i
+  end do inner_loop
+end do outer_loop
+
+
+
+
+

Parallelizable loop (do concurrent)#

+

The do concurrent loop is used to explicitly specify that the inside of the loop has no interdependencies; this informs the compiler that it may use parallelization/SIMD to speed up execution of the loop and conveys programmer intention more clearly. More specifically, this means +that any given loop iteration does not depend on the prior execution of other loop iterations. It is also necessary that any state changes that may occur must only happen within each do concurrent loop. +These requirements place restrictions on what can be placed within the loop body.

+
+

Simply replacing a do loop with a do concurrent does not guarantee parallel execution. +The explanation given above does not detail all the requirements that need to be met in order to write a correct do concurrent loop. +Compilers are also free to do as they see fit, meaning they may not optimize the loop (e.g., a small number of iterations doing a simple calculation, like the +below example). +In general, compiler flags are required to activate possible parallelization for do concurrent loops.

+
+

Example: do concurrent() loop

+
real, parameter :: pi = 3.14159265
+integer, parameter :: n = 10
+real :: result_sin(n)
+integer :: i
+
+do concurrent (i = 1:n)  ! Careful, the syntax is slightly different
+  result_sin(i) = sin(i * pi/4.)
+end do
+
+print *, result_sin
+
+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/organising_code/index.html b/learn/quickstart/organising_code/index.html new file mode 100644 index 000000000000..8983c45379a1 --- /dev/null +++ b/learn/quickstart/organising_code/index.html @@ -0,0 +1,940 @@ + + + + + + + + + Organising code structure — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ On this page +
+ + +
+ + +
+ + + + +
+ +
+ +
+

Organising code structure#

+

Most programming languages allow you to collect commonly-used code into +procedures that can be reused by calling them from other sections of code.

+

Fortran has two forms of procedure:

+
    +
  • Subroutine: invoked by a call statement

  • +
  • Function: invoked within an expression or assignment to which it returns a value

  • +
+

Both subroutines and functions have access to variables in the parent scope by argument association; +unless the value attribute is specified, this is similar to call by reference.

+
+
+

Subroutines#

+

The subroutine input arguments, known as dummy arguments, are specified in parentheses after the subroutine name; +the dummy argument types and attributes are declared within the body of the subroutine just like local variables.

+

Example:

+
! Print matrix A to screen
+subroutine print_matrix(n,m,A)
+  implicit none
+  integer, intent(in) :: n
+  integer, intent(in) :: m
+  real, intent(in) :: A(n, m)
+
+  integer :: i
+
+  do i = 1, n
+    print *, A(i, 1:m)
+  end do
+
+end subroutine print_matrix
+
+
+

Note the additional intent attribute when declaring the dummy arguments; this optional attribute signifies to the compiler whether the argument +is ‘’read-only’’ (intent(in)) ‘’write-only’’ (intent(out)) or ‘’read-write’’ (intent(inout)) within the procedure. +In this example, the subroutine does not modify its arguments, hence all arguments are intent(in).

+
+

It is good practice to always specify the intent attribute for +dummy arguments; this allows the compiler to check for unintentional errors and provides self-documentation.

+
+

We can call this subroutine from a program using a call statement:

+
program call_sub
+  implicit none
+
+  real :: mat(10, 20)
+
+  mat(:,:) = 0.0
+
+  call print_matrix(10, 20, mat)
+
+end program call_sub
+
+
+
+

This example uses a so-called explicit-shape array argument since we have passed additional variables to describe +the dimensions of the array A; this will not be necessary if we place our subroutine in a module as described later.

+
+
+

Functions#

+
! L2 Norm of a vector
+function vector_norm(n,vec) result(norm)
+  implicit none
+  integer, intent(in) :: n
+  real, intent(in) :: vec(n)
+  real :: norm
+
+  norm = sqrt(sum(vec**2))
+
+end function vector_norm
+
+
+
+

In production code, the intrinsic function norm2 should be used.

+
+

To execute this function:

+
program run_fcn
+  implicit none
+
+  real :: v(9)
+  real :: vector_norm
+
+  v(:) = 9
+
+  print *, 'Vector norm = ', vector_norm(9,v)
+
+end program run_fcn
+
+
+
+

It is good programming practice for functions not to modify their arguments—that is, all function arguments should be intent(in). +Such functions are known as pure functions. +Use subroutines if your procedure needs to modify its arguments.

+
+
+
+

Modules#

+

Fortran modules contain definitions that are made accessible to programs, procedures, and other modules through the use statement. +They can contain data objects, type definitions, procedures, and interfaces.

+
    +
  • Modules allow controlled scoping extension whereby entity access is made explicit

  • +
  • Modules automatically generate explicit interfaces required for modern procedures

  • +
+
+

It is recommended to always place functions and subroutines +within modules.

+
+

Example:

+
module my_mod
+  implicit none
+
+  private  ! All entities are now module-private by default
+  public public_var, print_matrix  ! Explicitly export public entities
+
+  real, parameter :: public_var = 2
+  integer :: private_var
+
+contains
+
+  ! Print matrix A to screen
+  subroutine print_matrix(A)
+    real, intent(in) :: A(:,:)  ! An assumed-shape dummy argument
+
+    integer :: i
+
+    do i = 1, size(A,1)
+      print *, A(i,:)
+    end do
+
+  end subroutine print_matrix
+
+end module my_mod
+
+
+
+

Compare this print_matrix subroutine with that written outside of a module +we no longer have to explicitly pass the matrix dimensions and can instead take +advantage of assumed-shape arguments since the module will generate the required +explicit interface for us. This results in a much simpler subroutine interface.

+
+

To use the module within a program:

+
program use_mod
+  use my_mod
+  implicit none
+
+  real :: mat(10, 10)
+
+  mat(:,:) = public_var
+
+  call print_matrix(mat)
+
+end program use_mod
+
+
+

Example: explicit import list

+
use my_mod, only: public_var
+
+
+

Example: aliased import

+
use my_mod, only: printMat=>print_matrix
+
+
+
+

Each module should be written in a separate .f90 source file. Modules need to be compiled prior to any program units that use them.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/learn/quickstart/variables/index.html b/learn/quickstart/variables/index.html new file mode 100644 index 000000000000..2d6be9017573 --- /dev/null +++ b/learn/quickstart/variables/index.html @@ -0,0 +1,972 @@ + + + + + + + + + Variables — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Variables#

+

Variables store information that can be manipulated by the program. +Fortran is a strongly typed language, which means that each variable +must have a type.

+

There are 5 built-in data types in Fortran:

+
    +
  • integer – for data that represent whole numbers, positive or negative

  • +
  • real – for floating-point data (not a whole number)

  • +
  • complex – pair consisting of a real part and an imaginary part

  • +
  • character – for text data

  • +
  • logical – for data that represent boolean (true or false) values

  • +
+

Before we can use a variable, we must declare it; this tells the compiler +the variable type and any other variable attributes.

+
+

Fortran is a statically typed language, which means the type of each +variable is fixed when the program is compiled—variable types cannot change while the program is running.

+
+
+
+

Declaring variables#

+

The syntax for declaring variables is:

+
<variable_type> :: <variable_name>
+
+
+

where <variable_type> is one of the built-in variable types listed above and +<variable_name> is the name that you would like to call your variable.

+

Variable names must start with a letter and can consist of letters, numbers and underscores. +In the following example we declare a variable for each of the built-in types.

+

Example: variable declaration

+
program variables
+  implicit none
+
+  integer :: amount
+  real :: pi
+  complex :: frequency
+  character :: initial
+  logical :: isOkay
+
+end program variables
+
+
+
+

Fortran code is case-insensitive; you don’t have to worry about the +capitalisation of your variable names, but it’s good practice to keep it consistent.

+
+

Note the additional statement at the beginning of the program: implicit none. +This statement tells the compiler that all variables will be explicitly declared; without +this statement variables will be implicitly typed according to the letter they begin with.

+
+

Always use the implicit none statement at +the beginning of each program and procedure. Implicit typing is considered bad practice in +modern programming since it hides information leading to more program errors.

+
+

Once we have declared a variable, we can assign and reassign values to it using the assignment operator =.

+

Example: variable assignment

+
amount = 10
+pi = 3.1415927
+frequency = (1.0, -0.5)
+initial = 'A'
+isOkay = .false.
+
+
+

Characters are surrounded by either single (') or double quotes (").

+

Logical or boolean values can be either .true. or .false..

+
+

Watch out” content=”for assignment at declaration: integer :: amount = 1. +This is NOT a normal initialisation; it implies the save attribute which means that the variable retains +its value between procedure calls. Good practice is to initialise your variables separately to their declaration.

+
+
+

Standard input / output#

+

In our Hello World example, we printed text to the command window. +This is commonly referred to as writing to standard output or stdout.

+

We can use the print statement introduced earlier to print variable values to stdout:

+
print *, 'The value of amount (integer) is: ', amount
+print *, 'The value of pi (real) is: ', pi
+print *, 'The value of frequency (complex) is: ', frequency
+print *, 'The value of initial (character) is: ', initial
+print *, 'The value of isOkay (logical) is: ', isOkay
+
+
+

In a similar way, we can read values from the command window +using the read statement:

+
program read_value
+  implicit none
+  integer :: age
+
+  print *, 'Please enter your age: '
+  read(*,*) age
+
+  print *, 'Your age is: ', age
+
+end program read_value
+
+
+

This input source is commonly referred to as standard input or stdin.

+
+
+

Expressions#

+

The usual set of arithmetic operators are available, listed in order of precedence:

+ + + + + + + + + + + + + + + + + + + + + + + +

Operator  

Description

**

Exponent

*

Multiplication

/

Division

+

Addition

-

Subtraction

+
+

Example:

+
program arithmetic
+  implicit none
+
+  real :: pi
+  real :: radius
+  real :: height
+  real :: area
+  real :: volume
+
+  pi = 3.1415927
+
+  print *, 'Enter cylinder base radius:'
+  read(*,*) radius
+
+  print *, 'Enter cylinder height:'
+  read(*,*) height
+
+  area = pi * radius**2
+  volume = area * height
+
+  print *, 'Cylinder radius is: ', radius
+  print *, 'Cylinder height is: ', height
+  print *, 'Cylinder base area is: ', area
+  print *, 'Cylinder volume is: ', volume
+
+end program arithmetic
+
+
+
+
+

Floating-point precision#

+

The desired floating-point precision can be explicitly declared using a kind parameter. +The iso_fortran_env intrinsic module provides kind parameters for the common 32-bit and 64-bit floating-point types.

+

Example: explicit real kind

+
program float
+  use, intrinsic :: iso_fortran_env, only: sp=>real32, dp=>real64
+  implicit none
+
+  real(sp) :: float32
+  real(dp) :: float64
+
+  float32 = 1.0_sp  ! Explicit suffix for literal constants
+  float64 = 1.0_dp
+
+end program float
+
+
+
+

Always use a kind suffix for floating-point literal constants.

+
+

Example: C-interoperable kind

+
program float
+  use, intrinsic :: iso_c_binding, only: sp=>c_float, dp=>c_double
+  implicit none
+
+  real(sp) :: float32
+  real(dp) :: float64
+
+end program float
+
+
+

In the next part we will learn how to use arrays for storing more than one +value in a variable.

+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/02-28-J3-february-meeting/index.html b/news/2020/02-28-J3-february-meeting/index.html new file mode 100644 index 000000000000..5f49eef72e57 --- /dev/null +++ b/news/2020/02-28-J3-february-meeting/index.html @@ -0,0 +1,738 @@ + + + + + + + + + J3 February 2020 Meeting — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

J3 February 2020 Meeting#

+

The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.

+
+

Attendance#

+

The following people / companies attended:

+

Voting members:

+
    +
  1. Intel: Jon Steidel

  2. +
  3. HPE/Cray: Bill Long

  4. +
  5. NVIDIA: Peter Klausler, Gary Klimowicz

  6. +
  7. IBM: Daniel Chen

  8. +
  9. ARM: Srinath Vadlamani

  10. +
  11. NCAR: Dan Nagle, Magne Haveraaen

  12. +
  13. NASA: Tom Clune

  14. +
  15. JPL: Van Sneider

  16. +
  17. LANL: Zach Jibben, Ondřej Čertík

  18. +
  19. ORNL: Reuben Budiardja

  20. +
  21. LBNL: Brian Friesen

  22. +
  23. Sandia: Damian Rouson

  24. +
  25. Lionel: Steven Lionel, Malcolm Cohen, Vipul Parekh

  26. +
  27. Corbett: Bob Corbett

  28. +
+

Others:

+
    +
  1. AMD: Richard Bleikamp

  2. +
  3. WG23: Stephen Michell (convenor), Erhard Ploedereder (member)

  4. +
  5. Structural Integrity: Brad Richardson

  6. +
+
+
+

Proposals Discussed at Plenary#

+
+

Monday 2/24#

+
+
+

Tuesday 2/25#

+ +
+
+

Wednesday 2/26#

+ +
+
+

Thursday 2/27#

+ +
+
+

Friday 2/28#

+ +
+
+
+

Skipped#

+

This was on the plan but we did not get to it:

+ +
+
+

More Details#

+

More details available at +j3-fortran/fortran_proposals #155 and at the official minutes from the meeting.

+
+
+ +
+ + + + +
+ + + +   + + + + + FortranCon 2020 + + + + + + +
+ + + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/04-06-Announcing-FortranCon-2020/index.html b/news/2020/04-06-Announcing-FortranCon-2020/index.html new file mode 100644 index 000000000000..99fbb108476f --- /dev/null +++ b/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -0,0 +1,612 @@ + + + + + + + + + FortranCon 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

FortranCon 2020#

+

FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.

+ +

FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click here to submit +an abstract.

+

The keynote presentation will be delivered by Steve Lionel +(@doctorfortran), convener of the +US Fortran Standards Committee.

+

The registration +is free of charge, with June 1, 2020 as the deadline. +Virtual participation will be enabled for speakers and attendees unable to +travel.

+

Read more about FortranCon 2020 here.

+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/04-18-Fortran-Webinar/index.html b/news/2020/04-18-Fortran-Webinar/index.html new file mode 100644 index 000000000000..af5a70f3863a --- /dev/null +++ b/news/2020/04-18-Fortran-Webinar/index.html @@ -0,0 +1,610 @@ + + + + + + + + + Open Source Directions Fortran webinar — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Open Source Directions Fortran webinar#

+

Ondřej Čertík (@ondrejcertik) and +Milan Curcic (@realmilancurcic) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.

+

Watch the episode now:

+ +

Special thanks to our hosts Melissa Mendonça +(@melissawm) and Madicken Munk +(@munkium), as well as +OpenTeams and QuanSight +for having us.

+

You can find all previous episodes of the Open Source Directions webinar +here.

+
+ +
+ + + + + + + + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/news/2020/05-01-Fortran-Newsletter-May-2020/index.html new file mode 100644 index 000000000000..ef251fe357b9 --- /dev/null +++ b/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -0,0 +1,750 @@ + + + + + + + + + Fortran newsletter: May 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: May 2020#

+
print *, 'Hello, World!'
+
+
+

Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.

+
+

This website#

+

If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!

+
+
+

Standard Library#

+

Here’s what’s new in Fortran Standard Library:

+
    +
  • #172 +New function cov in the stdlib_experimental_stats module to compute covariance of array elements. +Read the full specification here.

  • +
  • #168 +Specify recommended order of attributes for dummy arguments in the +Stdlib style guide.

  • +
  • #173 +Minor bug fix.

  • +
  • #170 +WIP: Addition of diag, eye, and trace functions to make working with +matrices easier.

  • +
+
+
+

Package Manager#

+

In the past month we’ve seen the first working implementation of the Fortran Package Manager (FPM). +Specifically:

+
    +
  • FPM supports three commands:

    +
      +
    • fpm build–compiles and links your application and/or library.

    • +
    • fpm test–runs tests if your package has any test programs.

    • +
    • fpm run–runs the application if your package has an executable program.

    • +
    +
  • +
  • FPM can build an executable program, a library, or a combination of both.

  • +
  • Currently only gfortran is supported as the compiler backend. FPM will suport other compilers soon.

  • +
+

Read the FPM packaging guide +to learn how to build your package with FPM.

+

FPM is still in very early development, and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know!

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for FPM.

  • +
  • Improve the documentation.

  • +
+

The short term goal of FPM is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

WG5 Convenor candidates#

+

Last month was also the deadline for the WG5 +convenor candidates to apply for the next 3-year term (2021-2024). +There are two candidates:

+
    +
  • Steve Lionel, who is also the current WG5 convenor, +announced running for another term. +Read Steve’s post +about how he has guided the standardization process over the past three years and his direction for the future.

  • +
  • Ondřej Čertík has also announced announced to run +for the WG5 convenor. +Read Ondřej’s announcement +and platform +that detail current issues with Fortran language development and how to +overcome them going forward.

  • +
+
+
+

Events#

+
    +
  • OpenTeams and QuanSight hosted Ondřej Čertík and Milan Curcic +in the Episode 40 of the Open Source Directions Webinar. +They talked about the current state and future of Fortran, as well as about building the Fortran community and developer tools. +Read more about it and watch the video here.

  • +
  • FortranCon 2020 will take place on July 2-4 in Zurich, Switzerland. +Virtual participation is enabled for both attendees and speakers. +Registration is free and due by June 1, 2020.

  • +
  • J3/WG5 joint meeting will take place on October 12-16 in Las Vegas, Nevada. +You can submit a proposal for the Standards committee here. +For reference, you can read the notes from the February meeting.

  • +
+
+
+

Who’s hiring?#

+ +
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/news/2020/06-01-Fortran-Newsletter-June-2020/index.html new file mode 100644 index 000000000000..5ccbad2cd5bf --- /dev/null +++ b/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -0,0 +1,777 @@ + + + + + + + + + Fortran newsletter: June 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: June 2020#

+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+
+

fortran-lang.org#

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+

If you haven’t yet, please explore the website and let us know +if you have any suggestions for improvement. +Specifically, we’ll be focusing on the Learn page and its mini-books +in the coming months. +Please help us make them better!

+

Here are some specific items that we worked on:

+
    +
  • #90 +WIP: Mini-book on building programs

  • +
  • #83 +Improving the structure and navigation of the Learn pages

  • +
  • #46 +Build website previews from pull requests

  • +
+
+
+

Fortran Discourse#

+

On May 4 we launched the Fortran Discourse, an online discussion board +for anything and everything Fortran related. +You can use it discuss the Fortran language, ask for help, announce events and/or personal projects, or just lurk +around. +There are already quite a few interesting discussions going on. +Join us!

+
+
+

Fortran Standard Library#

+

Recently we launched a website for the API documentation of the Fortran Standard Library. +The website is automaticaly generated by FORD. +Code of Conduct, licence, and workflow for contributing to the Fortran Standard Library can also be found on the website.

+

Here’s what’s new in the Fortran Standard Library:

+
    +
  • #191 +WIP: Function for computing Pearson correlations among elements of +an array in the stdlib_experimental_stats module

  • +
  • #189 +WIP: Procedures for sparse matrices operations. Ongoing discussion on the API can be found +here.

  • +
  • #183 +Automatic API-doc generation and deployment of this stdlib website

  • +
  • #170 +Addition of the new functions diag, eye, and trace functions to make working with +matrices easier. +Read the full specifications here.

  • +
+
+
+

Package Manager#

+

In this past month support for dependencies between packages has been added +to the Fortran Package Manager (fpm). +You can specify either a path to another folder on your machine with an fpm package, +or a git repository (and optionally a specific branch, tag or commit) that +contains the package. fpm will then take care of fetching the dependency for you +(if necessary) and any packages it depends on, and compiling and linking it into +your project. Check out an example hello world package +that uses this functionality.

+

fpm is still in very early development, and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm.

  • +
  • Improve the documentation.

  • +
+

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+

Specific items that are new this month:

+
    +
  • #82 +You can now add remote git repositories as Fortran dependencies to your project.

  • +
  • #73 +Improved output messages for the user

  • +
+
+
+

Events#

+
    +
  • We hosted the very first Fortran Monthly call on May 14. +The turnout was astonishing–over 23 people joined. +You can read the notes from the call here. +We’ll have another one this month. +Subscribe to the mailing list and/or +join the Discourse to stay tuned.

  • +
  • FortranCon 2020 will take place on July 2-4 in Zurich, Switzerland. +Virtual participation is enabled for both attendees and speakers. +Registration is free and due by June 1, 2020. +There are quite a few submissions from the fortran-lang community: +A talk on stdlib by Jeremie Vandenplas, +one about the Fortran Package Manager (fpm) by Brad Richardson, +a talk on LFortran compiler by Ondřej Čertík, +as well as one about building the Fortran community +by Milan Curcic.

  • +
  • J3/WG5 joint meeting, originally slated for October 12-16 in Las Vegas, Nevada, has been cancelled. +However, the work on proposals for the Fortran Standard doesn’t stop. +You can submit a proposal for the Standards committee here. +For reference, you can read the notes from the February meeting.

  • +
+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories +fortran-lang/stdlib, +fortran-lang/fpm, +fortran-lang/fortran-lang.org, +j3-fortran/fortran_proposals:

+

Ondřej Čertík (@certik), Milan Curcic (@milancurcic), Laurence Kedward (@LKedward), Jeremie Vandenplas (@jvdp1), Brad Richardson (@everythingfunctional), Izaak “Zaak” Beekman (@zbeekman), Martin Diehl (@MarDiehl), @arjenmarkus, Van Snyder (@vansnyder), @FortranFan, @epagone, Ivan (@ivan-pi), Neil Carlson (@nncarlson), Ashwin Vishnu (@ashwinvis), Williams A. Lima (@ghwilliams), Peter Klausler (@klausler), Chris MacMackin (@cmacmackin), Pedro Costa (@p-costa), @mobius-eng, Salvatore Filippone (@sfilippone), @ShamanTcler, Amit Kumar (@aktech), Bálint Aradi (@aradi), Melissa Weber Mendonça (@melissawm), Jacob Williams (@jacobwilliams), Rohit Goswami (@HaoZeke), Amir Shahmoradi (@shahmoradi), Bill Long (@longb).

+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/news/2020/07-01-Fortran-Newsletter-July-2020/index.html new file mode 100644 index 000000000000..b8dc4fa74231 --- /dev/null +++ b/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -0,0 +1,753 @@ + + + + + + + + + Fortran newsletter: July 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: July 2020#

+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+
+

fortran-lang.org#

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
    +
  • #98: updated the Quickstart mini-book tutorial with a comprehensive overview of derived types;

  • +
  • #99: added a second mini-book tutorial to the Learn page on building compiled programs and libraries;

  • +
  • #100: added a new top-level web-page for Fortran-lang community projects. +The page gives useful information and links for new contributors, as well as acknowledging each of our many existing contributors. +Check it out at https://fortran-lang.org/community.

  • +
+

Ongoing work:

+
    +
  • #101: Code style for Fortran examples in the tutorials. +See the corresponding community poll and discussion on Discourse;

  • +
  • #112: Plan for core language tutorials.

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+

Did you know you don’t need to know HTML or any fancy languages to contribute to the website; +all of the online tutorials and most of the website content are written in markdown, a simple markup language for formatting text - don’t worry if you haven’t used it before, it’s very easy to pick up!

+
+
+

Fortran Standard Library#

+

What’s new in the Fortran Standard Library:

+
    +
  • #209 +Implements Simpson’s rule for 1-d arrays (simps and simps_weights) in the +quadrature module (stdlib_experimental_quadrature).

  • +
  • #205 +Tests for and improved standard conformance.

  • +
+

Some miscellaneous fixes and improvements:

+
    +
  • #208 +Fixes to support Intel Fortran compilers

  • +
  • #210 +Fixes to support NAG compiler

  • +
  • #207 +#211 +Other minor fixes and improvements

  • +
+
+
+

Fortran Package Manager#

+

What’s new in fpm:

+
    +
  • #99 +fpm now lets you specify a custom build script or a Makefile to use. +This will help building packages that use a custom structure and/or external +dependencies in other languages.

  • +
  • #89 +Allow specifying specific tests or executables to run via command-line arguments.

  • +
  • #85 +Enables having specific dependencies for tests and executables.

  • +
  • #97 +#100 +#101 +Minor improvements to the README.

  • +
+

fpm is still in very early development, and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm.

  • +
  • Improve the documentation.

  • +
+

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Events#

+
    +
  • We had our second Fortran Monthly call on June 19. +You can read watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
    +
  • FortranCon 2020 began today (July 2), +with many interesting talks. +See the talk schedule here.

  • +
+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/news/2020/08-01-Fortran-Newsletter-August-2020/index.html new file mode 100644 index 000000000000..830a870aa045 --- /dev/null +++ b/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -0,0 +1,837 @@ + + + + + + + + + Fortran newsletter: August 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: August 2020#

+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+
+

fortran-lang.org#

+

We continued the work on the Fortran-lang website, including:

+
    +
  • #116: updates to the Quickstart tutorial on loop control and syntax

  • +
  • #120: updated the +Book section with a comprehensive list of +books about Fortran

  • +
  • #121, #122, #127, #128: additional packages added to the Fortran-lang.org packages page

  • +
+

Ongoing work:

+
    +
  • #117: Adding a +Benchmarks section, a new dedicated repository was created at +https://github.com/fortran-lang/benchmarks and many details have been +discussed in issues there

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

What’s new in the Fortran Standard Library:

+
    +
  • #223: the structure of the Fortran Standard Library has been modified for clarity and ease of use. With these changes, both experimental and stable procedures will reside together in the same modules. The status of the procedures (experimental vs stable) are documented in the code, in the specs, and in the API docs

  • +
+

Main ongoing discussions:

+
    +
  • #225: Name convention for derived types in stdlib

  • +
  • #224: Handling and propagating errors inside stdlib

  • +
  • #221: API for a bitset data type

  • +
  • #201: API for file system operations

  • +
+
+
+

Fortran Package Manager#

+

What’s new in fpm:

+
    +
  • We created the fpm-registry repository, +which serves as a registry of fpm-enabled Fortran packages. +Please see the README there to learn how to contribute a package. +For now, the registry is simply a list of fpm-enabled Fortran packages that you can use as a dependency in your fpm.toml file. +Soon, this registry will be used to generate detailed metadata that will be used by fpm to allow you to search for packages from the command-line, e.g. fpm search <package> or similar.

  • +
  • #146: We discussed the design of the new Fortran implementation of fpm in a video call. We agreed on the need for an intermediate package model which will allow for clean separation of fpm frontends (user interface, parsing, and semantics) and fpm backends (fpm itself, CMake, Make, etc.).

  • +
  • #131, +#132, +#139, +#140, +#142, +#145, +#147, +#148, +#151: +We merged several pull requests toward the Fortran fpm implementation. The Haskell implementation has moved to the fpm/bootstrap directory, and the Fortran implementation is developed in fpm/fpm. The Fortran fpm is, of course, an fpm package itself so it can be built by the Haskell fpm. Soon, it will be able to be build by itself.

  • +
+

fpm is still in very early development, and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm.

  • +
  • Improve the documentation.

  • +
+

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Fortran benchmarks#

+

We created the benchmarks repository with the goal to design and implement a comprehensive set of benchmarks. +The benchmarks will aim to compare the performance of various Fortran compilers, as well as the performance of canonical algorithms implemented in Fortran and different languages. +If you’d like to contribute in any way, be it the design, implementation, or testing of benchmarks, please join the ongoing discussion here.

+
+
+

Classic Flang#

+

We’ve begun to evaluate pull requests and merge them into the original Flang +compiler again. There is now a biweekly call to discuss issues and plans for +Classic Flang. The next call will be Wednesday, August 12, 8:30 AM Pacific time. +The notes from previous calls, upcoming agenda and a link to join the call can +be found here.

+

In the last call, AMD reviewed their outstanding pull requests for Fortran debug +metadata enhancements.

+
+
+

LLVM Flang#

+

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs. We are fixing bugs we find in +running FCVS and other test suites that use F77.

+

We cominue upstreaming the lowering code from the fir-dev fork (MLIR-based +Fortran IR) into the llvm-project repository. Arm is working on changes to +support a driver program to replace the throwaway driver we currently have.

+

AMD has been contributing parser and semantic processing for OpenMP constructs +like task wait, barrier and parallel constructs.

+

Changes have been made to default parse/unparse/compile processing to default to +gfortran (not NVIDIA Fortran).

+

Valentin Clement has been committing initial changes for OpenACC support.

+
+
+

LFortran#

+

What’s new in LFortran:

+
    +
  • The initial prototype C++ backend can translate Fortran’s do concurrent to C++’s Kokkos::parallel_for: https://twitter.com/lfortranorg/status/1280764915242811393

  • +
  • LFortran has a Twitter account for latest updates: @lfortranorg

  • +
  • Work is progressing on the production version of LFortran that is written in C++

  • +
  • 22 Merge Requests were merged and 4 issues fixed in July 2020. Some notable ones:

    +
      +
    • #163: Implement basic Fortran to C++ translation backend

    • +
    • !410: Make simple calculations work via LLVM in interactive mode

    • +
    • !402: Build ASR (Abstract Semantic Representation) properly for subroutines and functions

    • +
    +
  • +
+

The short term goal is to get the C++ based production version of LFortran +matching most of the features from the Python prototype version and make a +public release. The long term goal is to build a modern Fortran compiler that +works with any production code and allows it to run efficiently on modern +hardware (CPUs and GPUs), both interactively and compiling to binaries, and +provide the basis for other tools such as the Fortran to C++ translation, editor +support, automatic documentation generation (and doctesting like in Python), +automatic formatting and others.

+
+
+

Events#

+
    +
  • FortranCon 2020 was held July 2 - 4. +with many interesting talks. +See the talk schedule +here. +All presentations have been recorded and will be soon made available online by the FortranCon organizers.

  • +
  • We had our third Fortran Monthly call on July 16. +You can read watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of the four repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/news/2020/09-01-Fortran-Newsletter-September-2020/index.html new file mode 100644 index 000000000000..e70b00040bcf --- /dev/null +++ b/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -0,0 +1,860 @@ + + + + + + + + + Fortran newsletter: September 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: September 2020#

+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+
+

fortran-lang.org#

+

We continued the work on the Fortran-lang website, specifically:

+
    +
  • #133: +Listing fpm packages on the Packages page of the website

  • +
+

Ongoing work:

+
    +
  • #117: Adding a +Benchmarks section, a new dedicated repository was created at +https://github.com/fortran-lang/benchmarks and many details have been +discussed in issues there

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

There hasn’t been new stdlib development in August, however ongoing work and discussions continue:

+
    +
  • #227: API proposal for logging facilities in stdlib

  • +
  • #225: Name convention for derived types in stdlib

  • +
  • #224: Handling and propagating errors inside stdlib

  • +
  • #221: API for a bitset data type

  • +
  • #201: API for file system operations

  • +
+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Ongoing work in fpm:

+
    +
  • #146 (WIP): +Implementing internal dependencies and build backend in the Fortran fpm

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Fortran benchmarks#

+

We created the benchmarks repository with the goal to design and implement a comprehensive set of benchmarks. +The benchmarks will aim to compare the performance of various Fortran compilers, as well as the performance of canonical algorithms implemented in Fortran and different languages. +If you’d like to contribute in any way, be it the design, implementation, or testing of benchmarks, please join the ongoing discussion here.

+
+
+

Compilers#

+
+

GFortran#

+

GFortran 10.2 has been released, a bugfix release for 10.1. +Bugs fixed include PR94361, a memory leak with finalizers.

+

The development version of gfortran now supports the +full OpenMP 4.5 specification. This will be released +with GCC 11, but of course people can already download +and test it.

+
+
+

Classic Flang#

+

We’re evaluating pull requests and merging them into the original Flang +compiler again. We pulled in 4 changes in the past couple of weeks, and expect +to merge in a few more each week. One upcoming change is the support for LLVM 10, +which requires the use of a new fork, the classic-flang-llvm-project +fork of the LLVM monorepo. See +PR#1 +for details.

+

The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, September 9 and 23, 8:30 AM Pacific time. The notes from previous +calls, upcoming agenda and a link to join the call can be found +here.

+
+
+

LLVM Flang#

+

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs. We are fixing bugs we find +in running FCVS and other F77 test suites (and the F77 parts of non-F77 +suites).

+

In conjunction with the MLIR-based code from the fir-dev fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs. We +continue to work on refactoring necessary to upstream this fork into LLVM +flang proper.

+

Arm is working on changes to support a driver program to replace the temporary +driver we currently use.

+

Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support.

+
+
+

LFortran#

+

What’s new in LFortran:

+
    +
  • 143 Merge Requests were merged and 22 issues fixed in August 2020

  • +
  • The C++ backend can now translate to C++ and compile many simple Fortran programs

  • +
  • The parser can now parse a large subset of Fortran (if you find something that +cannot be parsed, please report a bug). Not all the information is yet +represented in the AST (so later stages of the compiler also work on a smaller +subset), but one should not get parse errors anymore for most valid codes.

  • +
  • Initial lfortran fmt subcommand for formatting Fortran files, you can +provide feedback +here.

  • +
  • A new command lfortran kernel can run LFortran as a Jupyter kernel.

  • +
  • LFortran itself gives a nice Python like stacktrace (on Linux and macOS) in +Debug mode when an unhandled excetion happens or a segfault.

  • +
+

Our goal for September is to get LFortran working for a much larger subset of +Fortran and allow it to compile and run via the C++ translation backend (the +LLVM backend will follow soon after).

+

You can follow LFortran on Twitter for latest updates: @lfortranorg.

+
+
+
+

Events#

+
    +
  • We had our fourth Fortran Monthly call on August 20. +You can watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/news/2020/10-01-Fortran-Newsletter-October-2020/index.html new file mode 100644 index 000000000000..c1467cba49d9 --- /dev/null +++ b/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -0,0 +1,881 @@ + + + + + + + + + Fortran newsletter: October 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: October 2020#

+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+
+
+

fortran-lang.org#

+

This month we’ve had only one minor change to the website:

+
    +
  • #136: +Small fix in the opening sentence on the compilers page

  • +
+

Ongoing work:

+
    +
  • #117: Adding a +Benchmarks section, a new dedicated repository was created at +https://github.com/fortran-lang/benchmarks and many details have been +discussed in issues there.

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+

Fortran Standard Library#

+

This month we’ve had an improvement to the stdlib_ascii module, +as well as addition of logging facilities.

+
    +
  • #238: Improvements to the stdlib_stats module by adding explicit conversions.

  • +
  • #228: Implementation of the stdlib_logger module. +It provides a global logger instance for easy use in user applications, as well as a logger_type derived type +if multiple concurrent loggers are needed. +See the logger specification +to learn more.

  • +
+

Work in progress:

+
    +
  • #239: Implementation of the stdlib_bitsets module. It provides a bitset data type.

  • +
  • #235: Improvements to the stdlib_ascii module

  • +
+

Otherwise, ongoing discussions continue:

+
    +
  • #225: Name convention for derived types in stdlib

  • +
  • #224: Handling and propagating errors inside stdlib

  • +
  • #221: API for a bitset data type

  • +
  • #201: API for file system operations

  • +
+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

This month has seen over a dozen additions and improvements to the Fortran implementation of fpm:

+
    +
  • #186: Implement version string validation and comparison

  • +
  • #185: Update CI workflow

  • +
  • #182: CLI interface to further development of subcommands

  • +
  • #180: Recursive source discovery

  • +
  • #178: Add more example packages

  • +
  • #177: Allow selective testing of single suites and tests

  • +
  • #175: Updated formatting of Markdown documents

  • +
  • #174: Cache Haskell Stack build in CI

  • +
  • #171: Increase test coverage of fpm manifest

  • +
  • #170: Source parsing tests

  • +
  • #163: Use different strategy to fetch git dependencies

  • +
  • #162: Updated OS type identification

  • +
  • #160: Add contributing guidelines +(you can read them here)

  • +
  • #157: Implement reading of fpm.toml

  • +
  • #155: Internal dependencies and build backend

  • +
+

Work in progress:

+
    +
  • #193 (WIP): Local path dependencies

  • +
  • #190 (WIP): Auto discovery of executables

  • +
  • #189 (WIP): Implement fpm new

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

We continue to evaluate and merge pull requests into the original Flang +compiler again. We pulled in several changes in the past month.

+

One important merge was support for LLVM 10, +which required the use of a new fork, the classic-flang-llvm-project +fork of the LLVM monorepo. See +PR#1 +for details.

+

Other recently merged pull requests into Classic Flang include:

+ +

The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, October 7 and 21, 8:30 AM Pacific time. The notes from previous +calls, upcoming agenda and a link to join the call can be found +here.

+
+
+

LLVM Flang#

+

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime +sufficient to compile and run Fortran 77 programs.

+

In conjunction with the MLIR-based code from the fir-dev fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs, +including the Fortran Compiler Validation Suite (FCVS). +We continue to work on refactoring necessary to upstream the fir-dev fork into LLVM +flang proper.

+

Arm has contributed changes toward a full-fledged driver for flang.

+

AMD continues to add support for OpenMP semantics and lowering.

+

Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support. This will be the topic of the next Flang Technical Community call +on Monday, October 5, 8:30 AM Pacific Time.

+

Michael Kruse continues to add support for building Flang on Windows with MSVC.

+
+
+

LFortran#

+

What’s new in LFortran:

+
    +
  • 59 Merge Requests were merged and 3 issues fixed in September 2020

  • +
  • The FortranCon 2020 LFortran video now available

  • +
  • LFortran, now imlemented in C++, has surpassed the Python prototype from a +year ago

  • +
  • The Jupyter notebook now works as it used to with the Python prototype

  • +
  • A new notebook added showcasing how to visualize AST, ASR and C++ translation +in Jupyter (!624)

  • +
  • X86 backend to generate direct x86-32 machine code (very fast compilation in +Debug mode)

  • +
  • Further parser improvements

  • +
  • Initial Fortran modules support

  • +
  • Initial support for using GFortran modules +(!632)

  • +
  • Better compiler error messages +(!617)

  • +
  • The interactive prompt (REPL) now understands arrow keys +(!603)

  • +
+

You can follow LFortran on Twitter for latest updates: @lfortranorg.

+
+
+
+

Events#

+
    +
  • We had our fourth Fortran Monthly call on September 25. +You can watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/news/2020/11-01-Fortran-Newsletter-November-2020/index.html new file mode 100644 index 000000000000..a295f7cb64e0 --- /dev/null +++ b/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -0,0 +1,883 @@ + + + + + + + + + Fortran newsletter: November 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: November 2020#

+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had a few additions and improvements to the website:

+
    +
  • #152: +New mini-book on setting up the Fortran development environment. +You can read it here.

  • +
  • #147: +Automated posting to @fortranlang Twitter using twitter-together.

  • +
  • #155: +Fix for a security vulnerability reported by the GitHub Security Team.

  • +
  • The following packages were added to the +Package Index: +atomsk, ddPCM, DFTB+, DFT-D4, ELPA, ELSI, FortJSON, fypp, HANDE, libmbd, libnegf, +mpifx, NTPoly, NWChem, OpenMolcas, PoisFFT, QMD-PROGRESS, scalapackfx, +tapenade, wannier90, and xtb.

  • +
  • #145, +#146, +#154, +#158: +Minor fixes and improvements.

  • +
+

Ongoing work:

+
    +
  • #160 (WIP): +In-depth introduction for Fortran with Make.

  • +
  • #156 (WIP): +Updating the mini-book on building programs.

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

This month progress was made on a few pull requests:

+
    +
  • #239: Implementation of the stdlib_bitsets module. It provides a bitset data type.

  • +
  • #240: Implementation of the stdlib_stats_distribution module. It provides probability distribution and statistical functions.

  • +
  • #243: A proposition to support newline characters in the message provided to the logger.

  • +
+

Don’t hesitate to test and review these pull requests!

+

Otherwise, ongoing discussions continue;

+
    +
  • #220: API for file system operations: directory manipulation

  • +
  • #241: Include a split function (202X feature)

  • +
+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

What’s new:

+
    +
  • #213: Bootstrap fpm submodule support

  • +
  • #208: Minor fixes to list_files and mkdir in fpm_filesystem

  • +
  • #206: Add installation script in install.sh

  • +
  • #193: Local and remote package dependencies (Fortran fpm can now build itself)

  • +
  • #190: Auto discovery of executables

  • +
  • #189, +#204, +#203: Implement fpm new in Fortran fpm

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): First feature-complete release of the Fortran implementation.

  • +
  • #221 (WIP): Test and executable runner options

  • +
  • #220 (WIP): Compiler and flags

  • +
  • #216 (WIP): Remove bashism from install.sh

  • +
  • #209 (WIP): Add automatic documentation for Fortran fpm

  • +
  • #202 (WIP): Create package manifest with toml-f build interface

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Try to use it. Does it work? No? Let us know! Read the fpm packaging guide to learn how to build your package with fpm.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

We continue to evaluate and merge pull requests into the original Flang +compiler again. We pulled in several changes in October.

+

Recently merged pull requests into Classic Flang include:

+ +

The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls will be +Wednesday, November 4 and 18, 8:00 AM Pacific time (note the time change). +The notes from previous calls, upcoming agenda and a link to join the call can be found +here.

+
+
+

LLVM Flang#

+

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime.

+

In conjunction with the MLIR-based code from the fir-dev fork (the Fortran +IR used for lowering), Flang can compile and run most F77 programs, +including the Fortran Compiler Validation Suite (FCVS).

+

Pat McCormick is working on an RFC for the merge of the lowering code +in the fir-dev fork into LLVM master. +The goal is to expedite this in a way that is acceptable to the Flang community, +so we can do further work in the single master branch.

+

Arm continues to contribute changes toward a full-fledged driver for flang.

+

AMD continues to add support for OpenMP semantics and lowering.

+

Valentin Clement continues to contribute parsing and semantics changes for +OpenACC support.

+

Michael Kruse continues to add support for building Flang on Windows with MSVC +to the point that he can build and test Flang on Windows.

+
+
+

LFortran#

+

What’s new in LFortran:

+
    +
  • 9 Merge Requests were merged and 5 issues fixed in October 2020

  • +
  • We gave LFortran +talk +at JupyterCon 2020

  • +
  • A prototype compiler implementation of conditional expressions for the +October 2020 Fortran Standards Committee meeting +(!645)

  • +
  • Better code formatting support (lfortran fmt)

  • +
  • Improvements to AST

  • +
  • Capture stdout on Windows in a Jupyter notebook +(!642)

  • +
+

You can follow LFortran on Twitter for latest updates: @lfortranorg.

+
+
+
+

Events#

+
    +
  • The US Fortran Standards Committee held a virtual meeting from October 12-14. +You can read the summary and the discussion here and all the documents here.

  • +
  • We had our 5th Fortran Monthly call on October 27. +You can watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/news/2020/12-01-Fortran-Newsletter-December-2020/index.html new file mode 100644 index 000000000000..43990ddde740 --- /dev/null +++ b/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -0,0 +1,859 @@ + + + + + + + + + Fortran newsletter: December 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: December 2020#

+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had a few updates to the website:

+
    +
  • #156: +Updates to the mini-book on building Fortran programs, including the addition of +short guides on Meson and CMake. +You can read the mini-book here.

  • +
  • #169: +Add PSBLAS to the package index.

  • +
+

Ongoing work:

+
    +
  • #160 (WIP): +In-depth introduction for Fortran with Make.

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #239: Implementation of bitsets in stdlib_bitsets.

  • +
  • #243, +#245, +#252, +#255: Various improvements to stdlib_logger.

  • +
  • #245, +#250: Minor fixes to the CI.

  • +
+

Work in progress:

+
    +
  • (WIP) #240: Implementation of the stdlib_stats_distribution module. It provides probability distribution and statistical functions.

  • +
  • (WIP) #189: Initial implementation of sparse matrices.

  • +
+

Don’t hesitate to test and review these pull requests!

+

Otherwise, ongoing discussions continue:

+
    +
  • #220: API for file system operations: directory manipulation

  • +
  • #241: Include a split function (202X feature)

  • +
  • #254: Proposition to add a logger for debug phases and levels among the different logs.

  • +
+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #259: Update the instructions for building from source in README.md.

  • +
  • #246: Automated binary releases in CI.

  • +
  • #233: Allow linking with external libraries.

  • +
  • #224: Add a reference document for the package manifest (fpm.toml).

  • +
  • #221, +#239: Runner options for test and app executables.

  • +
  • #220: Implement compiler and flags settings in Haskell fpm.

  • +
  • #209: +#237: Developer API docs.

  • +
  • #216, +#225, +#226, +#229, +#236, +#240, +#247: Other fixes and improvements.

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): First feature-complete release of the Fortran implementation.

  • +
  • (WIP) #230, +#261: Specification of the fpm CLI.

  • +
  • (WIP) #232: Allowing the extra section in fpm.toml.

  • +
  • (WIP) #248: Refactor backend for incremental rebuilds.

  • +
  • (WIP) #251: Dependency management.

  • +
  • (WIP) #255: Setting the compiler and specifying test or app target.

  • +
  • (WIP) #257: Implement fpm install.

  • +
  • (WIP) #260: Fix CI to test release build.

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

We continue to evaluate and merge pull requests into Classic Flang. Recently merged pull requests into Classic Flang include:

+ +

Pull requests merged into the supporting projects:

+ +

The Classic Flang biweekly call has been set up to discuss issues and plans +for the next pull requests to be validated and merged. Our next calls are Wednesday, December 16 and 30, 8:00 AM Pacific time. The notes from previous calls, upcoming agenda and a link to join the call can be found +here.

+
+
+

LLVM Flang#

+

Work continues on LLVM Flang, concentrating on semantics, lowering and runtime. Significant contributions are being made for OpenMP and OpenACC support.

+

In conjunction with the MLIR-based code from the fir-dev fork (the Fortran IR used for lowering), Flang can compile and run most F77 programs, including the Fortran Compiler Validation Suite (FCVS).

+

Pat McCormick is (still) working on an RFC for the merge of the lowering code +in the fir-dev fork into LLVM master. (This was interrupted by Supercomputing 2020 and other ECP duties.) The goal is to expedite this in a way that is acceptable to the Flang community, so we can do further work in the single master branch.

+

Recent updates include:

+
    +
  • Johannes Doerfert has created a web page at https://flang.llvm.org; you can find call and Slack logistics there

  • +
  • Nichols Romero has an llvm-dev RFC for adding Fortran tests to the llvm-tests project: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146873.html

  • +
  • Andzrej Warzynski has a flang-dev RFC regarding flang option names: http://lists.llvm.org/pipermail/flang-dev/2020-November/000588.html

  • +
  • Andzrej Warzynski has a cfe-dev RFC regarding refactoring clang to help flang driver become independent of clang: http://lists.llvm.org/pipermail/cfe-dev/2020-November/067263.html

  • +
  • Changed representation of CHARACTER data in type system to make more consistent with other types (for arrays)

  • +
  • Changed COMPLEX expression representation to provide better handling in lowering

  • +
  • More improvements for supporting Fortran 77 programs

  • +
  • Implemented runtime support for basic ALLOCATE/DEALLOCATE and further work

  • +
  • Continued implementation of table-driven runtime for derived types; posted documentation

  • +
  • Continued implementation of array expression lowering

  • +
  • Improved error checks on forward references

  • +
  • More updates to flang driver (option handling; -E can now be used to invoke just the Flang preprocessor)

  • +
  • OpenACC semantic checks for modifiers on enter/exit data, set directives

  • +
  • OpenACC lowering (enter/exit data, update, init, shutdown, wait directives)

  • +
  • OpenMP structure checker updates; semantic checks for copyin clause; schedule class

  • +
+
+
+
+

Events#

+
    +
  • Brian Friesen (Lawrence Berkeley National Laboratory) was selected to be the new Chair of PL22.3 (J3, US Standards Committee). +Brian will serve in his first term until November 2023. Congratulations, Brian!

  • +
  • We had our 6th Fortran Monthly call on November 17. +You can watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2020/index.html b/news/2020/index.html new file mode 100644 index 000000000000..359b5ea45a2d --- /dev/null +++ b/news/2020/index.html @@ -0,0 +1,1384 @@ + + + + + + + + Posted in 2020 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posted in + + 2020 + +

+ + +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2020 +

+ +
+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2020 +

+
    +
  • + + + + + 01 May 2020 + +
  • + + +
  • + + + + + + + + Milan Curcic + + + +
  • + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.

+

If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!

+
+ +

Read more ...

+
+
+ +
+

+ Open Source Directions Fortran webinar +

+
    +
  • + + + + + 18 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Ondřej Čertík (@ondrejcertik) and +Milan Curcic (@realmilancurcic) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.

+

Watch the episode now:

+
+ +

Read more ...

+
+
+ +
+

+ FortranCon 2020 +

+
    +
  • + + + + + 06 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.

+

FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click here to submit +an abstract.

+
+ +

Read more ...

+
+
+ +
+

+ J3 February 2020 Meeting +

+ +
+

The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.

+

The following people / companies attended:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/news/2021/01-01-Fortran-Newsletter-January-2021/index.html new file mode 100644 index 000000000000..9dc1381d3396 --- /dev/null +++ b/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -0,0 +1,921 @@ + + + + + + + + + Fortran newsletter: January 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: January 2021#

+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had a few updates to the website:

+
    +
  • #178, +#188: +Fix build preview

  • +
  • #179: +Fix word spelling error in quickstart page

  • +
  • #173, +#180, +#186: +Add missing packages from the list of popular Fortran projects to the package index

  • +
  • #182: +Update compilers page following Intel oneAPI release

  • +
  • #160, +#171: +In-depth introduction for Fortran with Make.

  • +
+

Ongoing work:

+
    +
  • #187 (WIP): +Correct compiler page and tutorial regarding Intel oneAPI and PGI to NVIDIA

  • +
  • #174 (WIP): +We are searching for a representative Fortran code snippet for the website and are looking forward to suggestions.

  • +
  • #190 (WIP): +Add links to fpm contributing guidelines

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #256: Add the method log_debug to stdlib_logger

  • +
  • #257: Improve CMake check for F18 error stop

  • +
  • #260: Add Intel oneAPI Fortran compiler to CI

  • +
  • #261: Add a level option to ignore logging messages

  • +
  • #263, +#267: Minor fixes to CI

  • +
  • #270: Add GFortran 10 to CI

  • +
  • #275: Add MSYS2 systems to Windows CI

  • +
  • #282: Add a note about memory issues when compiling stdlib with the support of arrays to up 15 ranks

  • +
  • #283: Improve the compilation load by splitting submodules

  • +
+

Work in progress:

+
    +
  • #269 (WIP): Implementation of a module for handling lists of strings

  • +
  • #271 (WIP), +#272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): Implementation of the stdlib_stats_distribution modules. It provides probability distribution and statistical functions.

  • +
  • #284 (WIP): Required changes to be able to use stdlib as a subproject in CMake

  • +
  • #189 (WIP): Initial implementation of sparse matrices.

  • +
+

Don’t hesitate to test and review these pull requests!

+

Otherwise, ongoing discussions continue about usability of stdlib +(#7, +#215, +#279, +#280, +#285), +and new implementations for stdlib +(#135, +#212, +#234, +#241, +#258, +#259, +#262, +#268, +#277).

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • Alpha release version 0.1.3

  • +
  • setup-fpm action: +GitHub Action to setup the Fortran Package Manager on Ubuntu, MacOS and Windows runners

  • +
  • Discussion board: +For questions & answers, sharing of ideas, showing off projects and, of course, discussions around fpm

  • +
  • #248: +Refactor backend for incremental rebuilds

  • +
  • #266: +Dependency management and fpm update subcommand

  • +
  • #255 +Setting the compiler and specifying test or app target

  • +
  • #262: +Add -fcoarray=single to default gfortran flags

  • +
  • #257: +Implement fpm install

  • +
  • #260: +Fix CI to test release build

  • +
  • #267: +Fix enumeration of non-library link objects

  • +
  • #268: +Fix dependency tracking issue in bootstrap version

  • +
  • #271: +Fix Windows run and test commands

  • +
  • #273: +Update developer documentation (manifest + command line)

  • +
  • #274: +Update README with link to setup-fpm github action.

  • +
  • #280: +Create specification for example section

  • +
  • #281: +Cleanup: Remove archived Rust prototype

  • +
  • #284: +Document model and backend for developers

  • +
  • #285: +CI: update naming of release binaries

  • +
  • #286: +Implement check for duplicated program names

  • +
  • #289: +Add support for same compilers as Fortran version to Haskell version

  • +
  • #291: +Initial implementation of fpm build --show-model

  • +
  • #292: +Specify the correct help for fpm run -h

  • +
  • #293: +Fix: missing error check after new_package call

  • +
  • #294: +Add: support for detecting .f and .F files

  • +
  • #300: +Remove -coarray=single option from ifort compiler default options

  • +
  • #303: +Fixes to source parsing

  • +
  • #304: +Remove note on not supported dependencies in program targets

  • +
  • #307: +Fix: program object file collision

  • +
  • #315: +Remove: -ffast-math in gfortran default release flags

  • +
  • #322: +Group sources by package in the model

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #230, +#261 (WIP): +Specification of the fpm CLI.

  • +
  • #316 (WIP): +Update subcommand “new” to reflect the addition of support for examples

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

There are several pull requests out for evaluation.

+

Only one pull request was merged in December:

+ +
+
+

LLVM Flang#

+

Alexis-Perry Holby (aperry@lanl.gov) has taken over the Flang biweekly calls. +An invitation was sent to the flang-dev LLVM email list on December 22nd. +Call notes will be sent to the flang-dev email list and also recorded here.

+

Recent development updates:

+
    +
  • Semantic analysis fix for index-names of FORALL statements

  • +
  • Continued work on parser support for ALLOCATE

  • +
  • Build tidying

  • +
  • OpenMP semantic checks: atomic, flush

  • +
  • Continued work on new driver

  • +
  • Fix for list-directed REAL output editing

  • +
  • Bug fixes: USE of USE of generic, crash in folding (#48437), crash in OpenMP semantic check (#48308), IMPLICIT_NONE(EXTERNAL)

  • +
  • Implement STORAGE_SIZE(), SIZEOF(), and C_SIZEOF()

  • +
  • OpenACC: update serial construct clauses for 3.1, enforce restriction on routine directive and clauses

  • +
  • OpenMP: adding important clauses to OmpClause, task reduction clause

  • +
+
+
+
+

Events#

+
    +
  • We had our 7th Fortran Monthly call on December 15. +You can watch the recording below:

  • +
+ +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
    +
  • Episode 6 of the +Algorithms+Data Structures=Programs (ADSP) Podcast discussed Fortran and +the recent fortran-lang developments.

  • +
  • First year of Fortran-lang by Milan Curcic.

  • +
+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/news/2021/02-01-Fortran-Newsletter-February-2021/index.html new file mode 100644 index 000000000000..f8145143d208 --- /dev/null +++ b/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -0,0 +1,873 @@ + + + + + + + + + Fortran newsletter: February 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: February 2021#

+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had a few updates to the website:

+
    +
  • #190: +Add links to fpm contributing guidelines

  • +
+

Ongoing work:

+
    +
  • #191 (WIP): +Fix author/maintainer output in fpm registry

  • +
  • #187 (WIP): +Correct compiler page and tutorial regarding Intel oneAPI and PGI to NVIDIA

  • +
  • #174 (WIP): +We are searching for a representative Fortran code snippet for the website and are looking forward to suggestions.

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #303, +#301, +#294: +Fixes and improvements for the manual Makefile build

  • +
  • #293: +Write a more verbose introduction to building stdlib

  • +
  • #291: +Export package files (CMake and pkg-config)

  • +
  • #290: +Rename CMake project from stdlib to fortran_stdlib

  • +
  • #288: +Follow GNU install conventions

  • +
  • #284: +Required changes to be able to use stdlib as a subproject in CMake

  • +
  • CMake example: +Integration of the Fortran standard library in CMake projects

  • +
+

Work in progress:

+
    +
  • #304 (WIP): +Add supported compilers MinGW 8, 9, 10

  • +
  • #269 (WIP): +Implementation of a module for handling lists of strings

  • +
  • #271 (WIP), +#272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): +Implementation of the stdlib_stats_distribution modules. +It provides probability distribution and statistical functions.

  • +
  • #189 (WIP): +Initial implementation of sparse matrices.

  • +
+

Don’t hesitate to test and review these pull requests!

+

Otherwise, ongoing discussions continue about usability of stdlib +(#7, +#215, +#279, +#280, +#285), +and new implementations for stdlib +(#135, +#212, +#234, +#241, +#258, +#259, +#262, +#268, +#277).

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #342: +Fix broken link in contributing guidelines

  • +
  • #337: +Allow hyphens in fpm project names in “fpm new”

  • +
  • #335: +Fix: performance regression

  • +
  • #334: +Remove a name clash in the fpm testsuite

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #230, +#261 (WIP): +Specification of the fpm CLI.

  • +
  • #316 (WIP): +Update subcommand “new” to reflect the addition of support for examples

  • +
  • #345 (WIP): +Update: fpm_backend with dynamic openmp scheduling

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

There are a number of pull requests out for evaluation.

+

A total of 12 pull requests were merged in January.

+ +
+
+

LLVM Flang#

+

Recent development updates:

+
    +
  • OpenMP semantic checks: private, firstprivate, lastprivate, Workshare Construct, DO loop restrictions

  • +
  • Detect call to abstract interface

  • +
  • OpenMP - add task_reduction clause, make reduction clause part of OmpClause

  • +
  • New Driver - adding support for various options, testing improvements, standard macro pre-definitions, fixed-form detection, CMake improvements

  • +
  • OpenACC - semantic checks to enforce declare directive restrictions

  • +
  • Internal subprogram improvements

  • +
  • OpenMP/OpenACC - Extend CheckNoBranching to handle branching provided by LabelEnforce

  • +
  • Disallow INTENT attribute on procedure dummy arguments

  • +
  • Module file improvements and bug fixes

  • +
  • Add tests for procedure arguments with implicit interfaces

  • +
+

Call notes will be sent to the flang-dev email list and also recorded here.

+
+
+
+

Events#

+
    +
  • We had our 8th Fortran Monthly call on January 19. +You can watch the recording below:

  • +
+ +
    +
  • This year fortran-lang will be applying as a mentor organisation for Google Summer of Code. +We have started working on the application and the project ideas; you can join the ongoing discussion here. +If you’d like to help us flesh out the ideas, or have a project idea of your own, please join our upcoming video calls on February 9 and 16 (call info will be posted in the Discourse thread), or write directly in the Discourse thread. +If you’re a student, or know students who are eligible to participate, and you’d like to help build the Fortran ecosystem please reach out and let us know.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/news/2021/03-01-Fortran-Newsletter-March-2021/index.html new file mode 100644 index 000000000000..2784da9ebdd2 --- /dev/null +++ b/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -0,0 +1,860 @@ + + + + + + + + + Fortran newsletter: March 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: March 2021#

+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #191: +Fix author/maintainer output in fpm registry

  • +
  • #193: +Rename all instances of fortran-lang.github.io to fortran-lang.org

  • +
  • #196: +Update package index

  • +
  • #199: +Fix broken link for LLVM flang

  • +
  • #205: +Add more electronic structure and atomistic simulation packages

  • +
  • #206: +Add books to learning section

  • +
  • #208: +Fix package information

  • +
+

Ongoing work:

+
    +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
  • #207 (WIP): +Correct subtitle of setting up your os

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #271: +Probability Distribution and Statistical Functions–PRNG Module

  • +
  • #304: +Add supported compilers MinGW 8, 9, 10

  • +
  • #310: +Extend stdlib_ascii module for handling character variables

  • +
  • #324: +Install setuptools for MinGW builds

  • +
+

Work in progress:

+
    +
  • #189 (WIP): +Initial implementation of sparse matrices.

  • +
  • #272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): +Implementation of the stdlib_stats_distribution modules. +It provides probability distribution and statistical functions.

  • +
  • #311 (WIP): +Implementation of a module for handling lists of strings

  • +
  • #320 (WIP): +Implement non-fancy functional string type

  • +
  • #313 (WIP): +Legendre polynomials and Gaussian quadrature

  • +
+

Please help improve stdlib by testing and reviewing these pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #316: +Update subcommand “new” to reflect the addition of support for the example/ directory

  • +
  • #345: +Fpm backend with dynamic openmp scheduling

  • +
  • #346: +Include root dir in path to default example setup

  • +
  • #349: +Suggest to move the fpm version in the boostrapping process

  • +
  • #372: +Unify release mode calling convention

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #230, +#261 (WIP): +Document the specification of the fpm CLI.

  • +
  • #352 (WIP): +Hacky fix for the help test

  • +
  • #357 (WIP): +Install script for Fortran fpm

  • +
  • #364 (WIP): +Plugin alpha version

  • +
  • #369 (WIP): +Separate build targets from model structure

  • +
  • #370 (WIP): +Update run subcommand

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

LFortran#

+ +
+
+
+

Events#

+
    +
  • We had our 9th Fortran Monthly call on February 25. +You can watch the recording below:

  • +
+ +
    +
  • This year Fortran-lang applied as a mentor organization for Google Summer of Code. +Accepted mentor organizations will be announced on March 9. +If you’re a student, or know students who are eligible to participate, and you’d like to help build the Fortran ecosystem please reach out and let us know.

  • +
  • The 223rd meeting of the US Fortran Standards Committee is held virtually from +February 22 to March 2 (Monday and Tuesday only). +Main topics of dicussion are the planned changes for the Fortran 202X revision +of the Standard:

    +
      +
    • List of all submitted papers

    • +
    • Summary of which papers were discussed each day and voting results

    • +
    +

    If you have ideas for new improvements to the language, please propose them +here.

    +
  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html new file mode 100644 index 000000000000..1c914c23418e --- /dev/null +++ b/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -0,0 +1,668 @@ + + + + + + + + + Fortran-lang accepted to Google Summer of Code 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Fortran-lang accepted to Google Summer of Code 2021#

+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+

We are looking for students to get in touch with us and to apply. +Click here +for instructions on how to do so.

+

Our main communication channel will be the Fortran Discourse. +There, we will announce a date for GSoC video calls where all prospective +students are welcome to join to ask questions, discuss, and brainstorm ideas.

+

We look forward to a productive and fun Google Summer of Code!

+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/news/2021/04-01-Fortran-Newsletter-April-2021/index.html new file mode 100644 index 000000000000..79d99e5eff0a --- /dev/null +++ b/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -0,0 +1,996 @@ + + + + + + + + + Fortran newsletter: April 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: April 2021#

+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #229: +Correct value of pi in quickstart mini-book

  • +
  • #226: +Added DelaunaySparse to package list

  • +
  • #223 +#225: +GSoC announcement

  • +
  • #222: +Avoid unclear formulation in contributing guide

  • +
  • #221: +Add information about free compiler versions

  • +
  • #216: +Improve tags

  • +
  • #207: +Correct subtitle of setting up your os

  • +
+

Ongoing work:

+
    +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
  • #220 (WIP): +Include learn resources to online courses

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #320: +Implement non-fancy functional string type

  • +
  • #362: +Fix wording in style guide for dimension attribute

  • +
  • #352: +Added TOC to README

  • +
  • #346 +#356: +Added to_lower, to_upper, reverse and to_title function to stdlib_string_type module

  • +
+

Work in progress:

+
    +
  • #189 (WIP): +Initial implementation of sparse matrices.

  • +
  • #272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): +Implementation of the stdlib_stats_distribution modules. +It provides probability distribution and statistical functions.

  • +
  • #311 (WIP): +Implementation of a module for handling lists of strings

  • +
  • #313 (WIP): +Legendre polynomials and Gaussian quadrature

  • +
  • #333 (WIP): +Provide abstract base class for a string object

  • +
  • #336 (WIP): +Add functions to convert integer/logical values to character values

  • +
  • #343 (WIP): +Implement strip and chomp as supplement to trim

  • +
  • #349 (WIP): +Simplify test makefile

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #355 (WIP): +Implement clip function

  • +
  • #359 (WIP): +Add general contributing guidelines to stdlib

  • +
  • #360 (WIP): +Summarize build toolchain workflow and implied rules

  • +
  • #363 (WIP): +Add sort to stdlib_string_type module

  • +
  • #367 (WIP): +Add Intel compiler workflow for OSX

  • +
+

Please help improve stdlib by testing and reviewing these pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • Alpha release version 0.2.0

  • +
  • Fpm is now available on conda-forge

  • +
  • #352: +Hacky fix for the help test

  • +
  • #357: +Install script for Fortran fpm

  • +
  • #369: +Separate build targets from model structure

  • +
  • #370: +Update run subcommand

  • +
  • #377: +Add explicit include-dir key to manifest

  • +
  • #378: +Add ford-compatible documentation to fpm_strings.f90

  • +
  • #386: +Replace deprecated flags in debug_fortran option

  • +
  • #390 +#407: +Implement –flag option for Fortran fpm

  • +
  • #397: +Add Conda install instructions to the README

  • +
  • #398: +Minor fix: for setting executable link libraries

  • +
  • #402: +Add fpm description and reorganize the README intro

  • +
  • #404: +Correct join for null input

  • +
  • #409: +Give Programs Access to Code in Subdirectories

  • +
  • #414: +Add few important links to README

  • +
  • #412: +Duplicate module definitions

  • +
  • #413: +Add: omp_lib to intrinsic modules list

  • +
  • #419: +Split workflow for Haskell and Fortran fpm

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #364 (WIP): +Plugin alpha version

  • +
  • #420 (WIP): +Phase out Haskell fpm

  • +
  • fpm-haskell (WIP): +Separate repository for the Haskell fpm version

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

A total of 10 pull requests were merged in February.

+ +

A total of 8 pull requests were merged in March.

+ +
+
+

LLVM Flang#

+

Recent development updates:

+
    +
  • New Driver:

    +
      +
    • Add options for -fdefault* and -flarge-sizes

    • +
    • Refine tests for module search directories

    • +
    • Add -fdebug-dump-parsing-log

    • +
    • Add -fdebug-module-writer option

    • +
    • Add debug dump, measure-parse-tree and pre-fir-tree options

    • +
    • Add -Xflang and make -test-io a frontend-only flang

    • +
    • Add -J and -module-dir to f18 driver

    • +
    • Fix -fdefault* family bug

    • +
    +
  • +
  • FIR (Fortran IR - a dialect of MLIR):

    +
      +
    • Add diagnostic tests for FIR ops verifier

    • +
    • Add FIR Types parser diagnostic tests

    • +
    • Upstream the pre-FIR tree changes (The PFT has been updated to support Fortran 77)

    • +
    • Update flang test tool support classes

    • +
    • Add zero_bits, array value, and other operations

    • +
    • Upstream utility function valueHasFirAttribute() to be used in subsequent merges

    • +
    +
  • +
  • OpenMP - add semantic checks for:

    +
      +
    • OpenMP 4.5 - 2.7.1 Do Loop restrictions for Threadprivate

    • +
    • Occurrence of multiple list items in aligned clause for simd directive

    • +
    • Flang OpenMP 4.5 - 2.15.3.6 Reduction clause

    • +
    • 2.15.4.2 - Copyprivate clause

    • +
    • 2.15.3.4 - Firstprivate clause

    • +
    • 2.15.3.5 - Lastprivate clause

    • +
    +
  • +
  • Update character tests to use gtest

  • +
  • Adaptations to MLIR API changes

  • +
  • Fix call to CHECK() on overriding an erroneous type-bound procedure

  • +
  • Handle type-bound procedures with alternate returns

  • +
  • Runtime: implement INDEX intrinsic function

  • +
  • Fix compilation on MinGW-w64

  • +
  • Extension: forward refs to dummy args under IMPLICIT NONE

  • +
  • Detect circularly defined interfaces of procedures

  • +
  • Implement the related character intrinsic functions SCAN and VERIFY

  • +
+

Call notes will be sent to the flang-dev email list and also recorded here.

+
+
+

LFortran#

+ +

LFortran is still in pre-alpha stage, but we are making rapid progress towards +getting it to compile more Fortran features. We are looking for contributors, +if you are interested, please get in touch and we will help you get started. +We can be contacted at Zulip Chat, mailinglist or GitLab issues (see +https://lfortran.org for links to all three).

+
+
+
+

Events#

+
    +
  • We had our 10th Fortran Monthly call on March 24. +You can watch the recording below:

  • +
+ +
    +
  • This year Fortran-lang is a mentor organization for Google Summer of Code. +If you’re a student, or know students who are eligible to participate, and you’d like to help build the Fortran ecosystem please reach out and let us know. +The student application window opened on March 29 and will close on April 13 at 14:00 Eastern Time.

  • +
  • The 223rd meeting of the US Fortran Standards Committee concluded on March 2. +Main topics of dicussion were the planned changes for the Fortran 202X revision of the Standard. +Here’s the list of all submitted papers, +and the summary +of the papers discussed and voting results. +The committee also welcomed a new member, Milan Curcic (@milancurcic), +who is the voting alternate to Gary Klimowicz (@gklimowicz).

    +

    If you have ideas for new improvements to the language, please propose them +here.

    +
  • +
  • Registration is open for the upcoming free webinar on +Fortran for High Performance Computing. +The webinar is organized by Excellerat +and will be presented by Wadud Miah (@wadudmiah) from the University of Southampton.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/04-20-First-Year/index.html b/news/2021/04-20-First-Year/index.html new file mode 100644 index 000000000000..c92b663d892f --- /dev/null +++ b/news/2021/04-20-First-Year/index.html @@ -0,0 +1,653 @@ + + + + + + + + + First year of the Fortran website — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

First year of the Fortran website#

+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+

Here are some of the ways that you can participate:

+
    +
  • Fortran Discourse discussion forum

  • +
  • Contribute to fpm, +stdlib, +the Fortran website or +any other project

  • +
  • Join our monthly Fortran call (see announcements at Discourse)

  • +
  • Contribute to the Fortran monthly newsletter

  • +
  • Follow our Fortran Twitter account +@fortranlang

  • +
+

Thank you everybody for your support so far. We are looking forward for the +second year!

+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/news/2021/05-01-Fortran-Newsletter-May-2021/index.html new file mode 100644 index 000000000000..168d0c257d77 --- /dev/null +++ b/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -0,0 +1,938 @@ + + + + + + + + + Fortran newsletter: May 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: May 2021#

+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #244: +Add a first year announcement

  • +
  • #236: +Add dl_poly_4 to package index

  • +
  • #220: +Include learn resources to online courses

  • +
+

Ongoing work:

+
    +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
  • #246 (WIP): +Transferring fortran90.org “Fortran Best Practise” into a mini-book

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #391: +Add issue templates

  • +
  • #388: +Changed filenames for bitset tests

  • +
  • #384: +Implement starts_with and ends_with functions

  • +
  • #367: +Add Intel compiler workflow for OSX

  • +
  • #360: +Summarize build toolchain workflow and implied rules

  • +
  • #343: +Implement strip and chomp as supplement to trim

  • +
  • #336: +Add functions to convert integer/logical values to character values

  • +
+

Work in progress:

+
    +
  • #189 (WIP): +Initial implementation of sparse matrices.

  • +
  • #272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): +Implementation of the stdlib_stats_distribution modules. +It provides probability distribution and statistical functions.

  • +
  • #311 (WIP): +Implementation of a module for handling lists of strings

  • +
  • #313 (WIP): +Legendre polynomials and Gaussian quadrature

  • +
  • #333 (WIP): +Provide abstract base class for a string object

  • +
  • #349 (WIP): +Simplify test makefile

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #355 (WIP): +Implement clip function

  • +
  • #359 (WIP): +Add general contributing guidelines to stdlib

  • +
  • #363 (WIP): +Add sort to stdlib_string_type module

  • +
  • #372 (WIP): +Correct implementation of to_title

  • +
  • #386 (WIP): +Start the addition of the module stdlib_sorting

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #420: +Phase out Haskell fpm

  • +
  • #468: +Identify OpenBSD

  • +
  • #465: +Fix typo in README

  • +
  • #442: +Use lib instead of ar on Windows

  • +
  • #440: +Minor edits to README

  • +
  • #438: +Add external-modules key to build table for non-fpm modules

  • +
  • #437: +Remove coarray single from default Intel flags

  • +
  • #433: +Fix to allow compiling C with Intel CC

  • +
  • #431: +Use different compiler flags on differnt platforms for Intel

  • +
  • #429: +Use wget if curl is missing in install.sh

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #364 (WIP): +Plugin alpha version

  • +
  • #423 (WIP): +Use default instead of master to reference the repository HEAD

  • +
  • #444 (WIP): +Allow to find include files / modules in CPATH environment variable

  • +
  • #449 (WIP): +Response files with ar on Windows

  • +
  • #450 (WIP): +Remove coarray flag from intel debug settings

  • +
  • #451 (WIP): +Refactor: use objects to represent compilers and archiver

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Classic Flang#

+

A total of 5 pull requests were merged in April.

+ +
+
+

LLVM Flang#

+

Recent development updates:

+
    +
  • OpenMP

    +
      +
    • [OPENMP5.1]Initial support for novariants clause.

    • +
    • [OPENMP5.1]Initial support for nocontext clause.

    • +
    • Add functionality to check “close nesting” of regions, which can be used for Semantic checks

    • +
    • [OpenMP5.1] Initial support for masked directive and filter clause

    • +
    • Modify semantic check for nesting of ordered regions to include close nesting check.

    • +
    • Remove OmpEndLoopDirective handles from code.

    • +
    • Add General Semantic Checks for Allocate Directive

    • +
    +
  • +
  • New Driver

    +
      +
    • Add options for -Werror

    • +
    • Modify the existing test cases that use -Mstandard in f18, to use -pedantic and %flang_fc1 to share with the new driver

    • +
    • Add support for -cpp/-nocpp

    • +
    • Fix -fdebug-dump-provenance

    • +
    • Add debug options not requiring semantic checks

    • +
    • Remove %flang-new from the LIT configuration

    • +
    • Update the regression tests to use the new driver when enabled

    • +
    • Add support for -fget-definition

    • +
    +
  • +
  • Move .f77 to the list of fixed-form file extensions

  • +
  • Runtime

    +
      +
    • Implement reductions

    • +
    • Implement numeric intrinsic functions

    • +
    • TRANSFER() intrinsic function

    • +
    • RANDOM_NUMBER, RANDOM_SEED, RANDOM_INIT

    • +
    • Implement IPARITY, PARITY, and FINDLOC reductions

    • +
    +
  • +
  • Fix unit test failure on POWER

  • +
  • Improve constant folding for type parameter inquiries

  • +
  • Check for conflicting BIND(C) names

  • +
  • Enforce a limit on recursive PDT instantiations

  • +
  • Accept & fold IEEE_SELECTED_REAL_KIND

  • +
  • Define missing & needed IEEE_ARITHMETIC symbols

  • +
  • Handle instantiation of procedure pointer components

  • +
  • Fix checking of argument passing for parameterized derived types

  • +
  • Fix spurious errors from runtime derived type table construction

  • +
  • Check for attributes specific to dummy arguments

  • +
  • Handle structure constructors with forward references to PDTs

  • +
+

Call notes will be sent to the flang-dev email list and also recorded here.

+
+
+

LFortran#

+
    +
  • 98 Merge Requests merged in April

  • +
  • Working towards compiling the SNAP proxy app (#313):

    +
      +
    • Code can be parsed to AST and transformed back to source code which compiles with other compilers and works

    • +
    • About 3rd of the files can be transformed from AST to ASR and the modules saved

    • +
    +
  • +
  • Other improvements:

    +
      +
    • Runtime library (more functions work)

    • +
    • Nested functions

    • +
    • Derived types

    • +
    +
  • +
+
+
+
+

Events#

+
    +
  • We had our 11th Fortran Monthly call on April 22. +You can watch the recording below:

  • +
+ +
    +
  • Wadud Miah (@wadudmiah) from the University of Southampton presented a webinar on Fortran for High Performance Computing, organized by Excellerat. You can find the slides and the recording here.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/05-18-Welcome-GSoC-students/index.html b/news/2021/05-18-Welcome-GSoC-students/index.html new file mode 100644 index 000000000000..9affc15d7815 --- /dev/null +++ b/news/2021/05-18-Welcome-GSoC-students/index.html @@ -0,0 +1,677 @@ + + + + + + + + + Fortran-lang welcomes new students to Google Summer of Code 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + + +
+ + +
+ + + + +
+ +
+ +
+

Fortran-lang welcomes new students to Google Summer of Code 2021#

+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+ +

This is the first year that Fortran-lang applied for Google Summer of Code, and +we’re beyond excited that our project was allocated this many student slots. +You can follow students’ progress in their weekly reports in the Fortran Discourse forum.

+

Thank you, Google, for your support of Fortran and open source software!

+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/news/2021/06-01-Fortran-Newsletter-June-2021/index.html new file mode 100644 index 000000000000..4218f4b4a796 --- /dev/null +++ b/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -0,0 +1,872 @@ + + + + + + + + + Fortran newsletter: June 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: June 2021#

+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #269: +Grammar and typo fixes in main page and quickstart minibook

  • +
  • #261: +Script for summarizing PRs

  • +
  • #259: +MapTran3D, RPNcalc, Gemini3D and Blocktran were added to the package index

  • +
  • #253: +Fixed grammar in Easy to learn section

  • +
+

Ongoing work:

+
    +
  • #255 (WIP): +Quickstart edits

  • +
  • #246 (WIP): +Transferring fortran90.org “Fortran Best Practise” into a mini-book

  • +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #417: +Add GCC-11 to workflow

  • +
  • #415: +Corrected Ubuntu version

  • +
  • #407: +Changed to_title to to_sentence and implemented correct to_title

  • +
  • #359: +Add general contributing guidelines to stdlib

  • +
  • #355: +Implement clip function

  • +
+

Work in progress:

+
    +
  • #420 (WIP): +First implementation of real-valued linspace.

  • +
  • #419 (WIP): +Allow modification of install directory for module files

  • +
  • #418 (WIP): +Improved support for NAG

  • +
  • #414 (WIP): +Implemented intelligent slice functionality

  • +
  • #408 (WIP): +Addition of the stdlib_sorting module

  • +
  • #363 (WIP): +Add sort to stdlib_string_type module

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #333 (WIP): +Provide abstract base class for a string object

  • +
  • #313 (WIP): +Legendre polynomials and Gaussian quadrature

  • +
  • #311 (WIP): +Implementation of a module for handling lists of strings

  • +
  • #272 (WIP), +#273 (WIP), +#276 (WIP), +#278 (WIP): +Implementation of the stdlib_stats_distribution modules. +It provides probability distribution and statistical functions.

  • +
  • #189 (WIP): +Initial implementation of sparse matrices.

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here is what is new in fpm:

+
    +
  • #450: +Remove coarray flag from intel debug settings

  • +
  • #423: +Use default instead of master to reference the repository HEAD

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #483 (WIP): +Allow fpm to change the working directory

  • +
  • #451 (WIP): +Refactor: use objects to represent compilers and archiver

  • +
  • #449 (WIP): +Response files with ar on Windows

  • +
  • #444 (WIP): +Allow to find include files / modules in CPATH environment variable

  • +
  • #364 (WIP): +Plugin alpha version

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

LFortran#

+
    +
  • 39 Merge Requests merged

  • +
  • Features that can now be compiled (in the LLVM backend):

    +
      +
    • More nested functions and callbacks (the context is properly propagated)

    • +
    • Runtime: size, lbound, ubound

    • +
    • Return statement

    • +
    • More array operations and declarations

    • +
    • Array initializer expressions

    • +
    +
  • +
  • Features in ASR only (semantics):

    +
      +
    • Runtime intrinsics: min, max, allocated

    • +
    +
  • +
  • Features in AST only (syntax):

    +
      +
    • Co-arrays

    • +
    • Methods

    • +
    • Enumerations

    • +
    • Attributes in use

    • +
    • BOZ constants

    • +
    • Forall

    • +
    • More interfaces

    • +
    • Import

    • +
    • Implicit statements

    • +
    • Select type

    • +
    +
  • +
+

The following people contributed code in May 2021:

+ +
+
+
+

Events#

+
    +
  • We had our 12th Fortran Monthly call on May 20. +You can watch the recording below:

  • +
+ + +

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/news/2021/07-01-Fortran-Newsletter-July-2021/index.html new file mode 100644 index 000000000000..97e54d2391e5 --- /dev/null +++ b/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -0,0 +1,894 @@ + + + + + + + + + Fortran newsletter: July 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: July 2021#

+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #276: +Add LATTE tight-binding molecular dynamics code to package index

  • +
  • #275: +Add crest program to package index

  • +
  • #255: +Quickstart edits

  • +
  • #273: +Add the SNaC package to package index

  • +
  • #272: +Add QUICK to package index

  • +
+

Ongoing work:

+
    +
  • #277 (WIP): +Add projects for Fortran-lua interfacing to package index

  • +
  • #274 (WIP): +Add convert_FORTRAN_case formatter to package index

  • +
  • #246 (WIP): +Transferring fortran90.org “Fortran Best Practices” into a mini-book

  • +
  • #201 (WIP): +Draft: Internationalization for fortran-lang

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #313: +Legendre polynomials and gaussian quadrature

  • +
  • #432: +Outer product

  • +
  • #439: +Reduce time spent on sorting tests

  • +
  • #440: +Make maximum rank an option

  • +
  • #433: +Implemented low level find function for string matching

  • +
  • #414: +Implemented intelligent slice functionality

  • +
  • #428: +Fix issue with stdlib_sorting

  • +
  • #419: +Allow modification of install directory for module files

  • +
  • #430: +Remove support for GCC 7 and 8

  • +
  • #424: +Add separate logical kind parameters

  • +
+

Work in progress:

+
    +
  • #445 (WIP): +Add disp function to display your data

  • +
  • #444 (WIP): +Add format_string to format other type to string

  • +
  • #441 (WIP): +Implement pad function

  • +
  • #437 (WIP): +[FPM] add fpm support

  • +
  • #436 (WIP): +Implement low-level replace_all function

  • +
  • #426 (WIP): +Addition of a subroutine to compute the median of array elements

  • +
  • #420 (WIP): +First implementation of real-valued linspace.

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #333 (WIP): +Provide abstract base class for a string object

  • +
  • #311 (WIP): +String list new

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #272 (WIP): +Probability Distribution and Statistical Functions – Uniform Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
  • #157 (WIP): +Update CMAKE files

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Alpha release update: Last month saw the release of v0.3.0 for fpm which includes a number of new features and bug fixes.

+

Here is what is new in fpm:

+
    +
  • #504: +install.sh, README.md: Update version number, single source file extension

  • +
  • #501: +Bump version for new release

  • +
  • #491: +Catch execute_command_line errors and print useful messages

  • +
  • #500: +Allow reading version number from file

  • +
  • #497: +correct for equal sign in flag options to fix #495

  • +
  • #449: +Response files with ar on Windows

  • +
  • #490: +Minor fix to module parsing

  • +
  • #489: +Redirect output when searching for archiver

  • +
  • #484: +Add support for invoking simple plugins

  • +
  • #483: +Allow fpm to change the working directory

  • +
+

Work in progress:

+
    +
  • First beta release (WIP): +First feature-complete release of the Fortran implementation.

  • +
  • #505 (WIP): +quiet mode for #502

  • +
  • #498 (WIP): +Draft - Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

LFortran#

+
    +
  • 49 Merge Requests merged

  • +
  • Highlights

    +
      +
    • Improvements to array support in the LLVM backend and at the ASR level: +array sections, allocatable arrays, and other improvements

    • +
    • Many parser fixes (lfortran fmt works on more projects): block data, +common block, equivalence, custom operator declaration, flush, critical and +event statements

    • +
    • More runtime functions: minval, maxval, real, sum, abs

    • +
    • Optional human readable mod files

    • +
    +
  • +
+
+
+
+

Events#

+
    +
  • We had our 13th Fortran Monthly call on June 15. +You can watch the recording below:

  • +
+ +
    +
  • Joint J3/WG5 (Fortran Standards Committees) meeting was held virtually from June 21-30 (Mondays and Wednesdays only). You can find all the papers that were discussed here. Highlights from the meeting:

    +
      +
    • Conditional expressions syntax for Fortran 202X (paper).

    • +
    • Protected components specifications and syntax for Fortran 202X (paper).

    • +
    • The generics feature planned for Fortran 202Y was discussed at depth (paper).

    • +
    • Jeff Hammond (NVidia Corporation) is the new J3 member as a voting alternate to Bryce Adelstein-Lelbach.

    • +
    • Target year for Fortran 202X is 2023, subject to change.

    • +
    +
  • +
  • FortranCon 2021 will be held virtually from September 23-24, 2021. For more information, visit the FortranCon website.

  • +
  • Work has started for our Google Summer of Code program. You read about our students and their progress so far on Discourse: https://fortran-lang.discourse.group/c/gsoc-2021/11

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/news/2021/08-01-Fortran-Newsletter-August-2021/index.html new file mode 100644 index 000000000000..8a3c55b83cd0 --- /dev/null +++ b/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -0,0 +1,896 @@ + + + + + + + + + Fortran newsletter: August 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: August 2021#

+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #281: +July newsletter

  • +
  • #274: +Add convert_FORTRAN_case formatter to package index

  • +
  • #277: +Add projects for Fortran-lua interfacing to package index

  • +
  • #284: +PRs script updates

  • +
  • #286: +Installation process for GFortran on OpenBSD

  • +
  • #288: +Add Flatiron institute multipole libraries to the package index

  • +
  • #289: +Small fix in packages index

  • +
  • #291: +Bump addressable from 2.7.0 to 2.8.0

  • +
  • #293: +add Apogee and Edinburgh compilers

  • +
  • #290: +Add arrayfire-fortran to package index

  • +
  • #294: +compilers: use more objective tone

  • +
  • #296: +my software with at least 5 stars

  • +
  • #297: +Fix insecure workflow.

  • +
+

Ongoing work:

+
    +
  • #246 (WIP): +Transferring fortran90.org “Fortran Best Practices” into a mini-book

  • +
  • #201 (WIP): +Draft: Internationalization for fortran-lang

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #436: +implemented low-level replace_all function

  • +
  • #454: +added stdlib_math to specs/index.md

  • +
  • #453: +implemented count function

  • +
  • #441: +implemented pad function

  • +
  • #456: +slice function’s documentation made user friendly

  • +
  • #459: +Fix CMake variable usage

  • +
  • #420: +First implementation of real-valued linspace.

  • +
  • #468: +Update CI

  • +
  • #469: +CMake: corrections and updates

  • +
  • #426: +Addition of a subroutine to compute the median of array elements

  • +
  • #474: +Bug fix: Allocatable argument ‘x’ is not allocated #472

  • +
+

Work in progress:

+
    +
  • #481 (WIP): +[stdlib_linalg] Update eye function.

  • +
  • #480 (WIP): +[stdlib_math] Add seq function.

  • +
  • #478 (WIP): +[stdlib_linalg] Add zeros, ones, ex function.

  • +
  • #477 (WIP): +[stdlib_linalg] Add empty function.

  • +
  • #475 (WIP): +Generating sorting subroutines specific to character type with fypp

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #470 (WIP): +Revival string list

  • +
  • #467 (WIP): +implemented move_alloc for string_type

  • +
  • #455 (WIP): +stdlib_hash: waterhash algorithm

  • +
  • #452 (WIP): +Implementation of a map data type

  • +
  • #445 (WIP): +[feature] disp(display your data) & format_string(format other type to string, see #444)

  • +
  • #444 (WIP): +Add format_string routine to format other types to strings

  • +
  • #437 (WIP): +[FPM] add fpm support

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #272 (WIP): +Probability Distribution and Statistical Functions – Uniform Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
  • #157 (WIP): +Update CMAKE files

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #507: +optimize file listing

  • +
  • #511: +check name used for package, executable, test, or example

  • +
  • #516: +initialize allocatable strings before using in a comparison

  • +
  • #517: +Fix run

  • +
  • #522: +remove warnings and fix truncated help text

  • +
  • #523: +Fix compilation error in ifort

  • +
+

Work in progress:

+
    +
  • #525 (WIP): +proposal to close #525 by generating build/.gitignore

  • +
  • #527 (WIP): +Add objects for handling compiler and archiver

  • +
  • #521 (WIP): +expand tabs

  • +
  • #506 (WIP): +Draft: initial implementation of implicit_none

  • +
  • #498 (WIP): +Draft - Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

LFortran#

+

Updates for July 2021:

+
    +
  • 90 merged MRs, this month we have crossed 1000 total merged MRs, 12 total contributors

  • +
  • Parser: we asked the community to test it, several people have reported about +15 bugs, we have fixed all of them (AST)

  • +
  • Initial fixed form parser (AST)

  • +
  • Classes and class procedures (ASR, LLVM)

  • +
  • Many common array usage now works, including allocatable (ASR, LLVM)

  • +
  • Associate construct (ASR, LLVM)

  • +
  • Compile time evaluation of constant expressions (ASR)

  • +
  • 7 people contributed code:

    +
      +
    • Ondřej Čertík

    • +
    • Thirumalai Shaktivel

    • +
    • Gagandeep Singh

    • +
    • Rohit Goswami

    • +
    • Dominic Poerio

    • +
    • Andrew Best

    • +
    • Sebastian Ehlert

    • +
    +
  • +
+

We are looking for new contributors, so if you are interested, please get in +touch with us!

+
+
+
+

Events#

+
    +
  • We had our 14th Fortran Monthly call on July 20. +You can watch the recording below:

  • +
+ +
    +
  • FortranCon 2021 will be held virtually from September 23-24, 2021. +Registration is free of charge and is due by September 15. +The first call for abstracts is due August 1, and the second is due September 1. +For more information, visit the FortranCon website.

  • +
  • Work is well under way started for our Google Summer of Code program. Read about our students and their progress so far on Discourse: https://fortran-lang.discourse.group/c/gsoc-2021/11

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/news/2021/09-01-Fortran-Newsletter-September-2021/index.html new file mode 100644 index 000000000000..973dddf37b45 --- /dev/null +++ b/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -0,0 +1,1054 @@ + + + + + + + + + Fortran newsletter: September 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: September 2021#

+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #303: +Add NJOY to package index

  • +
+
+

Work in progress#

+
    +
  • #302 (WIP): +Update Silverfrost compiler description.

  • +
  • #300 (WIP): +Add QCxMS to package index

  • +
  • #246 (WIP): +Transferring fortran90.org “Fortran Best Practices” into a mini-book

  • +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
+

Let us know if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the contributor guide for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #467: +Implemented move_alloc for string_type

  • +
  • #470: +Revival string list

  • +
  • #481: +[stdlib_linalg] Update eye function.

  • +
  • #493: +Update copyright and remove old artifact

  • +
  • #444: +Add format_string routine to format other types to strings

  • +
  • #483: +Remove GCC Fortran MinGW 8.4.0 from known to work list

  • +
+
+

Work in progress#

+
    +
  • #501 (WIP): +Minor updates to README.md

  • +
  • #500 (WIP): +Selection algorithms

  • +
  • #499 (WIP): +[stdlib_linalg] matrix property checks

  • +
  • #498 (WIP): +[stdlib_math] add arg/argd/argpi

  • +
  • #494 (WIP): +Add testing module to allow better structuring of test suites

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #488 (WIP): +[stdlib_math] add is_close routines.

  • +
  • #478 (WIP): +[stdlib_linalg] Add zeros, ones function.

  • +
  • #475 (WIP): +Generating sorting subroutines specific to character type with fypp

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #455 (WIP): +stdlib_hash: waterhash algorithm

  • +
  • #452 (WIP): +Implementation of a map data type

  • +
  • #445 (WIP): +[stdlib_io] disp(display your data)

  • +
  • #437 (WIP): +[FPM] add fpm support

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #272 (WIP): +Probability Distribution and Statistical Functions – Uniform Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • Version 0.4.0: +Alpha release update

  • +
  • #546: +Update version for release 0.4.0

  • +
  • #548: +Fix build on MacOS/ARM64

  • +
  • #527: +Add objects for handling compiler and archiver

  • +
  • #536: +Always call git init in fpm new when backfilling

  • +
  • #533: +Allow extra section in package manifest

  • +
  • #528: +Generate build/.gitignore

  • +
+
+

Work in progress#

+
    +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #521 (WIP): +Expand tabs in source parsing

  • +
  • #506 (WIP): +Initial implementation of implicit_none

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide to learn how to build your package with fpm, and the manifest reference to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

FFTPACK#

+

Zuo Zhihua (@zoziha) and Ondřej Čertík (@certik) started maintaining the public domain project FFTPACK under the Fortran-lang namespace. +The project is readily available for usage in with fpm.

+

Here is what is new in FFTPACK:

+
    +
  • #10: +Add (i)qct/dcosqi/dcosqf/dcosqb interfaces for quarter wave data.

  • +
  • #7: +Add dzffti/dzfftf/dzfftb interfaces

  • +
  • #4: +Improve fft interface for complex sequences: (i)fft/zffti/zfftf/zfftb

  • +
  • #6: +Add (i)rfft/dffti/dfftf/dfftb interface and ready to move to fortran-lang

  • +
  • #5: +Add fftshift/ifftshift

  • +
  • #3: +Add CI: fpm.yml

  • +
+
+

Work in progress#

+
    +
  • #11 (WIP): +Add (i)dct/dcosti/dcost interfaces.

  • +
+

Feedback and ideas for this project are welcome.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • New Driver and CMake integration:

    +
      +
    • The new driver has replaced the old, hence f18 has been deleted.

    • +
    • flang-new (aka. the new driver) now drives the flang bash script before an external compiler is called.

    • +
    • Code-generation work is ongoing.

    • +
    • Work is now proceeding to enable CMake to recognize the compiler and set the appropriate options for build configurations.

    • +
    +
  • +
  • FIR (Fortran IR - a dialect of MLIR):

    +
      +
    • Fortran 95 lowering and runtime support is nearing completion, particularly of intrinsics

    • +
    • Code upstreaming will begin again in earnest once F95 is deemed complete

    • +
    +
  • +
  • OpenMP

    +
      +
    • Nesting of region semantic checks

    • +
    • enter_data MLIR to LLVM IR lowering

    • +
    • Semantic checks for allocate directive

    • +
    • Lowering for various modifiers for the schedule clause

    • +
    • Pretty printer and parser for omp.target operation

    • +
    • Semantic checks for linear, nested barrier, allocate directive

    • +
    • Progress with firstprivate, critical, collapse, ordered, reduction

    • +
    +
  • +
  • Lift -Werror checks into local functions

  • +
  • Document the flang wrapper script

  • +
  • Fix the extent calculation when upper bounds are less than lower bounds

  • +
  • Fix list-directed plural repeated null values at end of record

  • +
  • Fix build failure on MacOS involving std::clock_t

  • +
  • Fix error messages on Windows.

  • +
  • Disable Plugins in out-of-tree builds

  • +
  • Correct off-by-one error in SET_EXPONENT

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+ +
+

LFortran 0.12.0 was released on August 15#

+

Changes since the last release.

+
    +
  • Fixed all issues in the parser that were reported (AST)

    +
      +
    • multiple loop single end do

    • +
    • arithmetic if

    • +
    +
  • +
  • Comments and empty lines are now represented in AST and formatted correctly (AST)

  • +
  • The formatter (lfortran fmt) now uses the minimal amount of parentheses in expressions

  • +
  • Initial fixed-form parser (AST)

  • +
  • Initial class support (ASR, LLVM)

  • +
  • Allocate / deallocate, allocatable arrays (ASR, LLVM)

  • +
  • Associate block (ASR, LLVM)

  • +
  • Runtime library refactoring (ASR, LLVM)

    +
      +
    • Split into builtin, pure and impure

    • +
    • iso_fortran_env, iso_c_binding intrinsic modules added

    • +
    +
  • +
  • Compile time evaluation (ASR, LLVM)

  • +
+

Commits (git shortlog -ns v0.11.0..v0.12.0):

+
   369  Ondřej Čertík
+    85  Thirumalai Shaktivel
+    79  Gagandeep Singh
+    75  Rohit Goswami
+    20  Andrew Best
+     4  Dominic Poerio
+
+
+
+
+

Updates in master since the last release:#

+
    +
  • LFortran can now compile binaries on Windows

  • +
  • C interoperation works on all platforms (including Windows and MSVC)

  • +
  • Runtime library improvements

    +
      +
    • Complex intrinsics fixed on all platforms

    • +
    • All trigonometric functions now use the Fortran impure interface in the runtime library

    • +
    • More intrinsics implemented

    • +
    +
  • +
  • Initial implementation of classes and methods

  • +
  • LFortran now works with fpm and compiles the hello world project and a few other example projects

  • +
  • Parser improvements: team and sync statements

  • +
  • Improved handling of character types as function arguments and return values

  • +
+

We are looking for new contributors, so if you are interested, please get in +touch with us! We would be happy to do a video call +with you to get you started.

+
+
+
+
+

Events#

+
    +
  • We had our 15th Fortran Monthly call on August 17. +You can watch the recording below:

    + +
  • +
  • FortranCon 2021 will be held virtually from September 23-24, 2021. +Registration is free of charge and is due by September 15. +The second call for abstracts is due September 1. +For more information, visit the FortranCon website.

  • +
  • Our Google Summer of Code program for 2021 is coming to a close. +Read about our students and their progress so far on Discourse: https://fortran-lang.discourse.group/c/gsoc-2021/11

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/news/2021/10-01-Fortran-Newsletter-October-2021/index.html new file mode 100644 index 000000000000..405f7434d227 --- /dev/null +++ b/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -0,0 +1,1022 @@ + + + + + + + + + Fortran newsletter: October 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: October 2021#

+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #305: +September newsletter draft

  • +
  • #300: +Add QCxMS to package index

  • +
  • #302: +Update Silverfrost compiler description.

  • +
  • #307: +Fixed typo

  • +
  • #308: +remove excess ‘mpi’ tag from fortran2018-examples

  • +
  • #246: +Transferring fortran90.org “Fortran Best Practices” into a mini-book

  • +
  • #314: +grammar and spelling from issue #313

  • +
  • #317: +more grammar, spelling, and rewording for Fortran Best Practices

  • +
  • #324: +replaced “be found be found” with “be found”

  • +
  • #320: +Alternative approach to avoiding integer division

  • +
  • #328: +Add incompact3d to package index

  • +
  • #333: +Add fparser to package index

  • +
  • #335: +Adding two more packages to the index

  • +
  • #334: +Add pFlogger to package index

  • +
  • #336: +One more package

  • +
+
+

Work in progress#

+
    +
  • #329 (WIP): +Quantum Information book, WSL GUI, and typos

  • +
  • #201 (WIP): +Draft: Internationalization for fortran-lang

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #509: +fixed typo

  • +
  • #503: +refactor documentation regarding consistency

  • +
  • #511: +Correctly set CMAKE_INSTALL_MODULEDIR cache variable

  • +
  • #513: +Update issue templates

  • +
  • #523: +Rename config.yaml -> config.yml

  • +
  • #508: +github-ci: add fpm support

  • +
  • #475: +Generating sorting subroutines specific to character type with fypp

  • +
  • #525: +Add files generated by tests to gitignore

  • +
  • #529: +Add maintainer entry to fpm manifest

  • +
  • #530: +Make it clearer how the user can control compiler optimization

  • +
  • #528: +Reduce redundancy caused by optional arguments

  • +
  • #3 (stdlib-cmake-example): +Add example integration with test-drive

  • +
+
+

Work in progress#

+
    +
  • #543 (WIP): +Fix string concat

  • +
  • #539 (WIP): +Add function gcd

  • +
  • #538 (WIP): +Bump stdlib version to 0.1.0

  • +
  • #537 (WIP): +Add a changelog for the current features of stdlib

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #521 (WIP): +Ensure module output directory is generated in configure stage

  • +
  • #520 (WIP): +[stdlib_io] add disp(display your data).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #500 (WIP): +Selection algorithms

  • +
  • #499 (WIP): +[stdlib_linalg] matrix property checks

  • +
  • #498 (WIP): +[stdlib_math] add arg/argd/argpi

  • +
  • #494 (WIP): +Add testing module to allow better structuring of test suites

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #488 (WIP): +[stdlib_math] add is_close routines.

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #455 (WIP): +stdlib_hash: waterhash algorithm

  • +
  • #452 (WIP): +Implementation of a map data type

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #272 (WIP): +Probability Distribution and Statistical Functions – Uniform Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #521: +expand tabs

  • +
  • #557: +Update installer script to update subprojects first

  • +
  • #558: +Add issue templates

  • +
  • #565: +Default branch renaming aftermath

  • +
  • #562: +Add new distributions where fpm is available to README

  • +
  • #563: +Add workflow to create single source fpm version

  • +
  • #564: +Separate upload stage in CI testing

  • +
  • #572: +Build no tests by default

  • +
  • #549: +Allow setting, archiver, C compiler flags and linker flags from commandline

  • +
  • #578: +help text was truncated

  • +
  • #579: +Fix dir not getting removed after testing fpm

  • +
  • #584: +Actually read environment variables

  • +
+
+

Work in progress#

+
    +
  • #575 (WIP): +Enable multiple build output directories

  • +
  • #569 (WIP): +Add workflow for continuous delivery

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • New Driver and CMake integration:

    +
      +
    • flang-omp-report plugin - first full fledged frontend plugin has been contributed

    • +
    • CMake integration - waiting on a new PR

    • +
    • Code-generation work is ongoing - task list has been presented to the community for discussion and approval

    • +
    +
  • +
  • FIR (Fortran IR - a dialect of MLIR):

    +
      +
    • Fortran 95 lowering and runtime support is nearing completion

    • +
    • Code upstreaming has begun again

    • +
    +
  • +
  • OpenMP

    +
      +
    • Merged: Critical, collapse clause, Fixes for SNAP.

    • +
    • In review: Firstprivate, Ordered, MLIR definitions for a few target side constructs, semantic checks for atomic, critical, sections, simd

    • +
    • OpenMP 5.0 metadirective

    • +
    +
  • +
  • Runtime

    +
      +
    • Change complex type define in runtime for clang-cl

    • +
    • Implement READ(SIZE=) and INQUIRE(IOLENGTH=) in runtime

    • +
    • GET_COMMAND_ARGUMENT runtime implementation, handling the LENGTH, VALUE, STATUS and ERRMSG parameters.

    • +
    • COMMAND_ARGUMENT_COUNT runtime implementation

    • +
    • Add POSIX implementation for SYSTEM_CLOCK

    • +
    • Fix WRITE after BACKSPACE on variable-length file

    • +
    • Implement Posix version of DATE_AND_TIME runtime

    • +
    +
  • +
  • Ported test scripts to Python, enables testing on Windows

  • +
  • More precise checks for NULL() operands

  • +
  • Enforce array conformance in actual arguments to ELEMENTALs

  • +
  • Constant folding for COUNT, SQRT, HYPOT, CABS, CSHIFT, EOSHIFT, PACK, UNPACK, and TRANSPOSE

  • +
  • Make this_image() an intrinsic function

  • +
  • Revamp C1502 checking of END INTERFACE [generic-spec]

  • +
  • Accept SIZE(assumed-rank, DIM=n)

  • +
  • Validate SIZE(x,DIM=n) dimension for assumed-size array x

  • +
  • Catch errors with intrinsic array inquiry functions

  • +
  • Correct overflow detection in folding of real->integer conversions

  • +
  • Upgrade warning to error in case of PURE procedure

  • +
  • Enforce fixed form rules about END continuation

  • +
  • Enforce specification function rules on callee, not call

  • +
  • Catch error: base of DATA statement object can’t be a pointer

  • +
  • Represent parentheses around derived types

  • +
  • Enforce constraint: defined ass’t in WHERE must be elemental

  • +
  • Catch branching into FORALL/WHERE constructs

  • +
  • Implement semantic checks for ELEMENTAL subprograms

  • +
  • Signal EOR in non advancing IO and move to next record

  • +
  • Extension: reduced scope for some implied DO loop indices

  • +
  • Take result length into account in ApplyElementwise folding

  • +
  • Apply double precision KindCode in specific proc interface

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+
    +
  • 81 +merged +Merge Requests in September 2021

  • +
  • LFortran Minimum Viable Product (MVP) released

  • +
  • LFortran 0.13.0, 0.13.1 and 0.14.0 released in September

  • +
  • The following people have contributed code to LFortran in September:

    +
      +
    • Ondřej Čertík

    • +
    • Gagandeep Singh

    • +
    • Carlos Une

    • +
    • Thirumalai Shaktivel

    • +
    • Harris M. Snyder

    • +
    • Sebastian Ehlert

    • +
    • Mengjia Lyu

    • +
    +
  • +
  • Many people have reported bugs (thank you all!)

  • +
  • Main features implemented in September:

    +
      +
    • Operator overloading (ASR, LLVM)

    • +
    • Goto (ASR, LLVM)

    • +
    • Runtime library improvements: iand, len, trim, len_trim

    • +
    • Interactive mode: get complex numbers, intrinsic functions working +(Windows, macOS, Linux)

    • +
    • New driver options: –fast, –symtab-only, –target

    • +
    +
  • +
+

We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • We had our 16th Fortran Monthly call on September 22. +You can watch the recording below:

    + +
  • +
  • The second international Fortran Conference (FortranCon) 2021 was held virtually on September 23-24 +Video recordings of the talks will be made available soon. +For more information, visit the FortranCon website.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/news/2021/11-01-Fortran-Newsletter-November-2021/index.html new file mode 100644 index 000000000000..e4fad7323d22 --- /dev/null +++ b/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -0,0 +1,975 @@ + + + + + + + + + Fortran newsletter: November 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: November 2021#

+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

This month we’ve had several updates to the website:

+
    +
  • #345: +Fix title in learning resources

  • +
  • #341: +Add Cantera to package index

  • +
  • #329: +Quantum Information book, WSL GUI, and typos

  • +
  • #340: +Minor fixes in Best Practices

  • +
+
+

Work in progress#

+
    +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • 0.1.0: +Initial version of the Fortran standard library

  • +
  • #543: +Fix string concat

  • +
+
+

Work in progress#

+
    +
  • #554 (WIP): +Hash functions

  • +
  • #552 (WIP): +Fix bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp (display your data).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #500 (WIP): +Selection algorithms

  • +
  • #499 (WIP): +[stdlib_linalg] matrix property checks

  • +
  • #498 (WIP): +[stdlib_math] add arg/argd/argpi

  • +
  • #494 (WIP): +Add testing module to allow better structuring of test suites

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #488 (WIP): +[stdlib_math] add is_close routines.

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #597: +Add LFortran optimization flag to release profile

  • +
  • #595: +List names without suffix (mainly for Windows)

  • +
  • #590: +Change link command on Windows with ifort or ifx

  • +
  • #575: +Enable multiple build output directories

  • +
  • #587: +Bootstrapping instructions version update

  • +
+
+

Work in progress#

+
    +
  • #598 (WIP): +Update README.md compiler, archiver, & link flags

  • +
  • #569 (WIP): +Add workflow for continuous delivery

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • Runtime

    +
      +
    • Front-end and runtime support for CALL EXIT and ABORT

    • +
    • Fix formatted real input regression w/ spaces

    • +
    • Add runtime interface for GET_ENVIRONMENT_VARIABLE

    • +
    • More work on SYSTEM_CLOCK runtime API and implementation

    • +
    • Implement GET_ENVIRONMENT_VARIABLE(LENGTH)

    • +
    +
  • +
  • OpenMP

    +
      +
    • Added OpenMP 5.0 specification based semantic checks for sections construct and test case for simd construct

    • +
    • Added test case for OpenMP 5.0 specification based semantic checks for parallel sections construct

    • +
    • Added OpenMP 5.0 specification based semantic checks for CRITICAL construct name resolution

    • +
    • Checks for THREADPRIVATE and DECLARE TARGET Directives

    • +
    • Initial parsing/sema for append_args clause for ‘declare variant’

    • +
    +
  • +
  • FIR

    +
      +
    • Add typeparams to fir.array_update, fir.array_fetch and fir.array_merge_store operations. Add optional slice operands to fir.array_merge_store op.

    • +
    • Updated various ops - fir.extract_value, fir.insert_value, fir.allocmem, fir.alloca, fir.field_index, fir.freemem, fir.store

    • +
    • Move the parsers, printers and builders from the TableGen file to the .cpp file

    • +
    • Update fir.alloca op - Add pinned attributes and specific builders

    • +
    • Add ops: fir.char_convert and fir.array_modify

    • +
    • Add passes: external name interop, affine promotion, affine demotion, character conversion, abstract result conversion, cfg conversion

    • +
    • Add fir.convert canonicalization patterns

    • +
    • Add the DoLoopHelper

    • +
    • Add IfBuilder and utility functions

    • +
    • Add FIRBuilder utility functions

    • +
    • Add character utility functions in FIRBuilder

    • +
    • Add Character helper

    • +
    • Add utility function to FIRBuilder and MutableBox

    • +
    • Add substring to fir.slice operation

    • +
    • Avoid slice with substr in fir.array_load, fir.array_coor and fir.array_merge_store

    • +
    +
  • +
  • Driver

    +
      +
    • Error if uuidgen is not installed

    • +
    • Fix erroneous &

    • +
    • Add actions that execute despite semantic errors

    • +
    +
  • +
  • flang-omp-report

    +
      +
    • replace std::vector’s with llvm::SmallVector

    • +
    • Switch from std::string to StringRef (where possible)

    • +
    • replace std::map with llvm::DenseMap

    • +
    +
  • +
  • Make builtin types more easily accessible; use them

  • +
  • Fix test regression from SQRT folding

  • +
  • Fold FINDLOC, MAXLOC, MINLOC, LGE/LGT/LLE/LLT, BTEST intrinsic functions

  • +
  • Take into account SubprogramDetails in GetInterfaceSymbol

  • +
  • Add debug dump method to evaluate::Expr and semantics::Symbol

  • +
  • Add a wrapper for Fortran main program

  • +
  • Improve runtime interface with C99 complex

  • +
  • Better error recovery for missing THEN in ELSE IF

  • +
  • Define IEEE_SCALB, IEEE_NEXT_AFTER, IEEE_NEXT_DOWN, IEEE_NEXT_UP

  • +
  • Catch mismatched parentheses in prescanner

  • +
  • Error checking for IBCLR/IBSET and ISHFT/SHIFT[ALR]

  • +
  • Document behavior for nonspecified/ambiguous cases

  • +
  • Add two negative tests for needExternalNameMangling

  • +
  • Expunge bogus semantic check for ELEMENTAL without dummies

  • +
  • Admit NULL() in generic procedure resolution cases

  • +
  • Fix bogus folding error for ISHFT(x, negative)

  • +
  • Emit unformatted headers & footers even with RECL=

  • +
  • Enforce rest of semantic constraint C919

  • +
  • Extension to distinguish specific procedures

  • +
  • Support NAMELIST input of short arrays

  • +
  • Fix generic resolution case

  • +
  • Speed common runtime cases of DOT_PRODUCT & MATMUL

  • +
  • Fix crash on empty formatted external READs

  • +
  • Extension: allow tabs in output format strings

  • +
  • Fix DOT_PRODUCT for logical

  • +
  • Fix NAMELIST input bug with multiple subscript triplets

  • +
  • Support legacy usage of ‘A’ edit descriptors for integer & real

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+
    +
  • 155 Merge Requests merged in October 2021

  • +
  • AST to ASR transformation simplified and unified

  • +
  • Many new intrinsics added

  • +
  • Rust style error messages, add first warnings and style suggestions

  • +
  • Fixed bugs in location information

  • +
  • C preprocessor added

  • +
+

We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • We have adopted two new Fortran-lang guidelines:

    + +
  • +
  • The US Fortran Standards Committee (J3) held the meeting 225 October 18-27, 2021. +The meeting was virtual and on Mondays and Wednesdays only. +Discussions focused on resolving any outstanding issues to the Fortran 202X features. +Here are the links to the meeting agenda, +minutes, +and papers. +See also the Fortran-lang and LFortran liaison report to J3 +submitted by Ondřej Čertík and Milan Curcic.

  • +
  • We had our 19th Fortran Monthly call on October 19. +You can watch the recording below:

    + +
  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/news/2021/12-01-Fortran-Newsletter-December-2021/index.html new file mode 100644 index 000000000000..24d3a0f3a9c3 --- /dev/null +++ b/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -0,0 +1,966 @@ + + + + + + + + + Fortran newsletter: December 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: December 2021#

+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
    +
  • #348: +Fix typo in author field

  • +
+
+

Work in progress#

+
    +
  • #347 (WIP): +Fortran Intrinsics

  • +
  • #201 (WIP): +Internationalization for fortran-lang

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #558: +Pin specific fpm version

  • +
  • #556: +fix some FORD links

  • +
  • #494: +Add testing module to allow better structuring of test suites

  • +
  • #562: +Minor update pure/elemental in string_type module

  • +
  • #565: +Make support for quadruple precision optional

  • +
  • #566: +Create a call for reviewers pull request template

  • +
  • #578: +Update error in case fypp preprocessor is not found

  • +
  • #579: +Add module for handling version information of stdlib

  • +
+
+

Work in progress#

+
    +
  • #581 (WIP): +Add routines for saving/loading arrays in npy format

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #573 (WIP): +Revised Hash functions incorporating changes in the main Stdlib repository.

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #500 (WIP): +Selection algorithms

  • +
  • #499 (WIP): +[stdlib_linalg] matrix property checks

  • +
  • #498 (WIP): +[stdlib_math] add arg/argd/argpi

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #488 (WIP): +[stdlib_math] add is_close routines.

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #353 (WIP): +Initial checkin for a module for tolerant comparison of reals

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #273 (WIP): +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • v0.5.0: +Alpha release update

  • +
  • #598: +Update README.md compiler, archiver, & link flags

  • +
  • #569: +Add workflow for continuous delivery

  • +
  • #602: +fix(fpm_compiler): intel windows release flag was incorrect

  • +
  • #607: +Repair –list option and correct obsolete descriptions of the –list option

  • +
  • #612: +Fix modules listing (for install)

  • +
  • #613: +Add: critical section to mkdir in backend

  • +
  • #616: +Add: workflow to make installer on push and release

  • +
  • #614: +Bump version to 0.5.0

  • +
  • setup-fpm#7: +Fix Latest Option

  • +
+
+

Work in progress#

+
    +
  • #622 (WIP): +Cleanup the backend output

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • OpenMP

    +
      +
    • Use the ultimate symbol in a call to the IsPointer function

    • +
    • Add parsing/sema/serialization for ‘bind’ clause.

    • +
    +
  • +
  • FIR

    +
      +
    • Add base of the FIR to LLVM IR pass

    • +
    • Add various FIR to LLVM IR conversion patterns:

      +
        +
      • fir.unreachable

      • +
      • fir.insert_on_range

      • +
      • fir.zero_bits

      • +
      • fir.select and fir.select_rank

      • +
      • fir.extract_value and fir.insert_value

      • +
      • types - fir.box, fir.logical, fir.char, fir.ptr

      • +
      • fir.box_rank, fir.box_addr, fir.box_dims, fir.box_elesize

      • +
      • fir.convert

      • +
      • fir.call

      • +
      • fir.store and fir.load

      • +
      +
    • +
    • Add substr information to fircg.ext_embox and fircg.ext_rebox operations

    • +
    • Use notifyMatchFailure in fir.zero_bits conversion

    • +
    • Restrict array type on fir.insert_on_range

    • +
    • Add test for FIR types conversion

    • +
    • Use contralized values for indexing box

    • +
    • Add complex operations conversion from FIR LLVM IR

    • +
    • Add TargetRewrite pass and TargetRewrite: Rewrite COMPLEX values

    • +
    +
  • +
  • Runtime

    +
      +
    • Read environment variables directly

    • +
    +
  • +
  • flang-omp-report

    +
      +
    • Removed unnecessary comments in flang-omp-report plugin tests

    • +
    • Remove the loop workarounds for nowait clause

    • +
    • Add flang-omp-report summarising script

    • +
    +
  • +
  • Checks for pointers to intrinsic functions

  • +
  • Fold SPREAD

  • +
  • Improve error message for misuse of NULL(mold) as data statement constant

  • +
  • Fix crash on “call system_clock(count_max=j)”

  • +
  • Fix combined folding of FINDLOC/MAXLOC/MINLOC

  • +
  • Implement GET_ENVIRONMENT_VARIABLE(VALUE)

  • +
  • Remove builder that takes SSA value instead of Attribute on ExtractValueOp, InsetValueOp, and InsertOnRangeOp

  • +
  • Remove getModelFortran::ISO::CFI_dim_t in DescriptorModel.h

  • +
  • Set the addendum when establishing pointer section in descriptor

  • +
  • Fix error in characteristics check at procedure pointer assignment

  • +
  • Initial parsing/sema for ‘align’ clause

  • +
  • Don’t reference non-invariant symbols in shape expressions

  • +
  • Make subscript list argument a nullable pointer

  • +
  • Distinguish error/warning cases for bad jumps into constructs

  • +
  • Fix folding of EPSILON()

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+
    +
  • 32 Merge Requests merged in November 2021

  • +
  • Support for same name interface and subroutine/function

  • +
  • Compile-time evaluation for bit intrinsics

  • +
  • Implement the repeat and shape intrinsics

  • +
  • Variadic support for min and max intrinsics

  • +
  • Implement the scalar random_number function

  • +
  • Fixes and improved error message for read and write statements

  • +
  • Support the final, intrinsic, and private attributes

  • +
  • Implement the ieee_arithmetic intrinsic module

  • +
  • Support for the abstract class

  • +
  • Support for assignment(=) on use statement

  • +
+

We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • Sebastian Ehlert presented the Fortran Package Manager at the PackagingCon 2021 conference. +You can watch the recording below:

    + +
  • +
  • Recordings of all FortranCon 2021 presentations are now available to view in +the FortranCon YouTube Channel. +Enjoy!

  • +
  • We had our 20th Fortran Monthly call on November 15. +You can watch the recording below:

    + +
  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/news/2021/12-29-Fortran-lang-2021-in-review/index.html new file mode 100644 index 000000000000..80c04387bfa8 --- /dev/null +++ b/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -0,0 +1,1073 @@ + + + + + + + + + Fortran-lang: 2021 in review — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +

=(Fortran-lang-2021-in-review)

+
+

Fortran-lang: 2021 in review#

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+

Standard Library (stdlib)#

+

To date, 33 people +have contributed code to stdlib, and more than 100 people have participated in +discussions. +More than a dozen new modules have been added in 2021:

+
    +
  • stdlib_array: Provides trueloc and falseloc which allow you +to index an array based on a logical condition in a functional style

  • +
  • stdlib_hash: Provides many hash algorithms, 32- and 64-bit alike

  • +
  • stdlib_math: Provides a number of common mathematical functions

  • +
  • stdlib_random: Pseudo-random integer number generation

  • +
  • stdlib_selection: Selection procedures for selecting elements from an array +given a desired range

  • +
  • stdlib_sorting: Sorting procedures based on Rust’s sorting algorithm and +introsort by David Musser

  • +
  • stdlib_specialfunctions: Provides the Legendre function and its derivative +in support of the Gaussian quadrature procedures

  • +
  • stdlib_stats_distribution_normal: Functions to sample values from a normal +distribution

  • +
  • stdlib_stats_distribution_uniform: Functions to sample values from a uniform +distribution

  • +
  • stdlib_string_type: Provides a string_type derived type that alleviates +some limitations of the variable-length character variables. string_type +is compatible with all intrinsic procedures that operate on character.

  • +
  • stdlib_stringlist_type: A derived type that is a 1-dimensional list of +strings

  • +
  • stdlib_strings: Provides a number of inquiry and manipulation procedures that +complement the intrinsic set

  • +
  • stdlib_version: Allows querying the version of the stdlib library build

  • +
+

which brings us to a total of 23 modules in stdlib. +You can read about these modules in more detail on the +stdlib API docs website.

+

Besides the new modules, procedures, and derived types, there have been a few +key improvements in terms of stdlib delivery:

+
    +
  1. You can now use stdlib as a dependency in your fpm projects, +see here. +This significantly lowers the bar for getting started with stdlib.

  2. +
  3. We had our first stdlib release (0.1.0) on October 4. As of now we don’t have +a set release schedule, and plan to publish a new release when there is +significant new functionality. +As stdlib matures and becomes more widely used, we expect releases to become +more frequent.

  4. +
  5. We now maintain a +change log where every change to the API is documented. +This is a useful document to reference when you want to know what’s been +added to the stdlib since the latest release.

  6. +
+

If you haven’t tried stdlib yet, please do and let us know what you think +and how we can improve it. +Our vision for stdlib is to provide basic utilities that most Fortran projects use, +as well as wider numerical capabilities with the scope of NumPy and SciPy.

+
+
+

Fortran Package Manager (fpm)#

+

Fortran Package Manager (fpm) is the package manager and build system for +Fortran. +Its key goal is to make developing, distributing, and reusing Fortran +libraries and applications as easy and as fun as possible. +In 2020, the big change for fpm was the transition from the prototype +implemented in Haskell to a pure Fortran implementation. +Fpm has since been used in increasingly more and ever larger Fortran projects.

+

To date, 22 people +have contributed code to fpm. +In 2021 fpm has advanced from v0.1.3 to v0.5.0. +Key additions this year include (release version in parentheses):

+
    +
  • CLI arguments for linker, archiver, and C compiler (0.5.0)

  • +
  • Support for MPI and LFortran (0.4.0)

  • +
  • Support for installed library modules via external-modules in the manifest +(0.3.0)

  • +
  • Automatic discovery of manifest files in parent directories (0.3.0)

  • +
  • Support for reading package version from file (0.3.0)

  • +
  • Support for include directories (0.2.0)

  • +
  • Support for --flag CLI option to specify compiler flags (0.2.0)

  • +
  • fpm build --show-model displays the internal representation of a package +(0.1.4)

  • +
  • Allow hyphen in new package names (0.1.4)

  • +
  • fpm new now supports --full and --bare to specify level of scaffolding +(0.1.4)

  • +
+

Check out also these fpm plugins:

+
    +
  • fpm-search: +Adds the fpm search command for searching for registered fpm packages from +the command line.

  • +
  • fpm-man: +Adds the fpm man command for displaying man-style help pages about Fortran +intrinsics and other language features.

  • +
+

At the time of writing, there are almost 200 projects now using fpm. +If you haven’t tried fpm yet, please do! +It has truly been a game-changing tool for many of us.

+

We have many ideas that we want to pursue, such as:

+
    +
  • First-class integration with other package managers such as Spack and Conda

  • +
  • First-class integration with build systems like CMake and Meson

  • +
  • Improving fpm’s package registry, etc.

  • +
+

We are always looking for new contributors. +If any of these projects interest you, please join us.

+
+
+

LFortran#

+
+ + + +
+

Though not technically a Fortran-lang project, +LFortran has been growing close to the Fortran-lang +community and projects largely thanks to its creator and lead developer +Ondřej Čertík also being one of the founding +members of Fortran-lang. +LFortran has been developing rapidly this year and was released as a +Minimum Viable Product (MVP) in September. +LFortran currently parses all of Fortran 2018 and compiles a significant +subset of the language. +16 people have contributed code so far, and many more have reported bugs or participated in discussions. +If you haven’t tried LFortran yet, please do and let us know how it can best +improve for your use case. +You can help speed up LFortran’s development by contributing code and/or +documentation directly, or by donating funds to the project via +NumFOCUS.

+

Follow LFortran on Twitter at @lfortranorg.

+
+
+

fortran-lang.org, Discourse, and social media#

+

A major addition to the Fortran website this year is the +Fortran Best Practices mini-book. +This is a port and an update to the well-known +fortran90.org by +Ondřej Čertík. +It provides a plethora of tips on how to write simple and idiomatic Fortran +for numerical tasks, and how to avoid some common gotchas. +Give it a read and let us know how it can be improved.

+

The Fortran Discourse is as active +as ever, with new users joining daily. +There are currently 338 active users out of a total of 537 registered users. +The Fortran Discourse is a great place to ask for help with Fortran code, post +a Fortran job opening, and discuss anything Fortran-related.

+

We also continue to release the monthly newsletter where we +document the progress month-by-month, as well as post about any notable events +in the Fortran world. +This newsletter is a great way to stay up to date with Fortran-lang. +If you’re also on Twitter, follow our account +@fortranlang for daily bite-size news and +updates, as well as the new @FortranTip +account, managed by Beliavsky, which brings +daily Fortran tips to your Twitter feed.

+

Finally, we meet on monthly video calls to discuss issues and topics related to all +Fortran-lang projects. +The calls are advertised on Fortran Discourse and are open to everyone. +Don’t hesitate to join the call to meet other Fortran-lang participants and take part +in different discussions.

+
+
+

New projects#

+

In addition to the flagship projects summarized above, a few new projects +started or were adopted by Fortran-lang this year.

+
+

fftpack#

+

fftpack is a classic collection of +subroutines to perform the Fast Fourier Transform on real and complex data. +It is based on the classic +FFTPACK library from Netlib. +fftpack was adopted by Fortran-lang in an effort to provide:

+
    +
  • A community-maintained FFT library

  • +
  • Bug fixes to the existing codebase

  • +
  • Modern interfaces on top of the existing API

  • +
  • fpm package for easy use as a dependency.

  • +
+
+
+

test-drive#

+

Test-drive is a simple and +easy-to-use testing framework developed by +Sebastian Ehlert. +It follows a simple functional style to collect and run your tests in parallel +and print a minimal and clean diagnostic printout to the standard output. +Test-drive is currently used by both stdlib and fpm for their own test suites. +Give test-drive a test drive for your next Fortran project!

+
+
+

fpm-docs#

+

fpm-docs is a brand new user +documentation website for fpm, developed by +Sebastian Ehlert. +Its key aim is to provide community-maintained documentation across four +target audiences/use cases:

+
    +
  • Tutorials: for learning how to use fpm for Fortran development

  • +
  • How-to guides: recipes for specific and concrete problems

  • +
  • Design documents: resources that document the design of various aspects of +fpm

  • +
  • References: specification documents of fpm components

  • +
+
+ + + +
+

As the fpm user docs are now hosted at +fpm.fortran-lang.org, the API docs are now +located at fortran-lang.github.io/fpm/.

+
+
+
+

Google Summer of Code 2021#

+

2021 has been the first year for Fortran-lang to participate in the +Google Summer of Code program. +Together with NumFOCUS and LFortran, Fortran-lang had six students who worked on a +variety of projects:

+ +

You can read in more detail about their projects +here.

+

A big thank you to all students, mentors, and administrators, for their great +work, and of course, to the Google Summer of Code program for making +possible for students to participate.

+

We plan to apply for Google Summer of Code in 2022 as well. +The program is no longer limited to students and anybody 18 or older can apply +to work on an open source project and get paid for it. +If you’re interested participating in the program in 2022 with Fortran-lang, +don’t hesitate to contact us and we’ll guide you toward applying.

+
+
+

Conferences and papers#

+
+

FortranCon 2021#

+

Like in 2020, the Fortran event of this year was +FortranCon 2021, the international +Fortran conference, held on September 23-24. +The keynote speaker this year was Damian Rouson, +the head of the +Computer Languages and Systems Software (CLaSS) +group at the Lawrence Berkeley National Lab. +Fortran-lang had a dedicated session (a Fortran-lang minisymposium) on the +second day of the conference, with the talks about specific Fortran-lang +projects as well as the Google Summer of Code student presentations. +FortranCon was hosted at the University of Zurich (UZH), and organized by +Tiziano Müller from UZH and +Alfio Lazzaro from Hewlett-Packard Enterprise. +You can watch all FortranCon 2021 talks here.

+
+
+

PackagingCon 2021#

+

Another big event for Fortran-lang was +PackagingCon 2021, a conference dedicated to +package management software and its community of developers. +Sebastian Ehlert presented fpm–you can watch the +recording below:

+
+ +
+
+
+

Papers#

+

This year two papers have been written about Fortran-lang projects. +The first paper documents the motivation and goals of +Fortran-lang: “Toward Modern Fortran Tooling and a Thriving Developer +Community” by Milan Curcic, Ondřej Čertík, Brad Richardson, Sebastian Ehlert, +Laurence Kedward, Arjen Markus, Ivan Pribec, and Jérémie Vandenplas +(https://arxiv.org/abs/2109.07382).

+
+ + + +
+

If Fortran-lang has been helpful in your work and if you want to cite this paper, +here’s the citation info:

+
@article{curcic2021toward,
+  title={Toward Modern Fortran Tooling and a Thriving Developer Community},
+  author={Curcic, Milan and
+          {\v{C}}ert{\'\i}k, Ond{\v{r}}ej and
+          Richardson, Brad and
+          Ehlert, Sebastian and
+          Kedward, Laurence and
+          Markus, Arjen and
+          Pribec, Ivan and
+          Vandenplas, J{\'e}r{\'e}mie},
+  journal={arXiv preprint arXiv:2109.07382},
+  year={2021}
+}
+
+
+

We have also submitted a paper draft to IEEE’s +Computing in Science & Engineering (CiSE) +journal, titled “The State of Fortran” and led by +Laurence Kedward. +For this paper, we have +publicly invited on Discourse +anybody in the Fortran-lang community to participate. +Once published, this will be another paper that you can cite. +Stay tuned for its publication.

+
+
+
+

Summary#

+ +
+
+

Thanks#

+

We thank all people who contributed to Fortran-lang projects and discussions +on GitHub, Fortran Discourse, Fortran-lang mailing list, Twitter, and +elsewhere. +It wouldn’t have been possible without you all.

+
end program fortran_lang_2021
+
+
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2021/index.html b/news/2021/index.html new file mode 100644 index 000000000000..92d5284dc74f --- /dev/null +++ b/news/2021/index.html @@ -0,0 +1,1899 @@ + + + + + + + + Posted in 2021 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posted in + + 2021 + +

+ + +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/news/2022/01-01-Fortran-Newsletter-January-2022/index.html new file mode 100644 index 000000000000..81212e7115ba --- /dev/null +++ b/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -0,0 +1,1029 @@ + + + + + + + + + Fortran newsletter: January 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: January 2022#

+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
    +
  • #349: +Newsletter draft for December 2021

  • +
  • #350: +Updated CaNS item so that it shows the version

  • +
  • #353: +Add MCST LCC C, C++ and Fortran compiler

  • +
  • #351: +Use HEAD to reference default branch

  • +
  • #355: +2021 review article draft

  • +
  • #356 (WIP): +Adding Fortran Error Handler to packages index

  • +
+
+

Work in progress#

+
    +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #500: +Selection algorithms

  • +
  • #586: +Update of stdlib_stats.md

  • +
  • #581: +Add routines for saving/loading arrays in npy format

  • +
  • #590: +Update changelog

  • +
  • #588: +Error on no tests in CTest

  • +
  • #585: +stdlib_selection: correction of typos and addition of some checks

  • +
  • #591: +Fix compilation errors with makefiles due to command-line variable assignments

  • +
  • #273: +Probability Distribution and Statistical Functions – Normal Distribution Module

  • +
  • #584: +Replace the call to sort by select in stdlib_stats_median

  • +
  • #593: +Probability Distribution and Statistical Functions – Uniform Distribution Module

  • +
  • #594: +Minor update to makefile installation instructions

  • +
  • #596: +Rename references to default branch

  • +
  • #600: +Fix iomsg allocation in save_npy

  • +
  • #488: +[stdlib_math] add is_close routines.

  • +
  • #597: +Add getline to read whole line from formatted unit

  • +
  • #498: +[stdlib_math] add arg/argd/argpi

  • +
  • #603: +Implement trueloc/falseloc

  • +
  • #573: +Revised Hash functions incorporating changes in the main Stdlib repository.

  • +
  • #609: +Consistent spec titles

  • +
  • #610: +Fixed tables in stdlib_hash_procedures.md

  • +
  • #499: +[stdlib_linalg] matrix property checks

  • +
  • #613: +Ignore hash testing binaries and logs

  • +
+
+

Work in progress#

+
    +
  • #611 (WIP): +Hash maps

  • +
  • #605 (WIP): +[stdlib_math] Add function diff

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #276 (WIP): +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #634: +Better extraction of the Fortran compiler from the MPI wrapper

  • +
+
+

Work in progress#

+
    +
  • #642 (WIP): +Replace polymorphic assignment with move_alloc

  • +
  • #630 (WIP): +allow backfilling of current directory in fpm-new subcommand

  • +
  • #622 (WIP): +Cleanup the backend output

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • FIR

    +
      +
    • Add fir.box_isarray, fir.box_isptr and fir.box_isalloc conversion.

    • +
    • Add !fir.vector type conversion

    • +
    • Add type conversion for fir.boxchar

    • +
    • Add !fir.alloca conversion

    • +
    • Add placeholder conversion pattern for disptach operations

    • +
    • Add fir.select_case conversion

    • +
    • Add !fir.field type conversion

    • +
    • Transform IsPresentOpConversion and AbsentOpConversion

    • +
    • Add type conversion for FIR heap type

    • +
    • Add type conversion for FIR integer kind

    • +
    • Add !fir.len type conversion

    • +
    • Transform fir.emboxchar to a sequence of LLVM MLIR

    • +
    • Add fir.select_type conversion placeholder

    • +
    • Remove extra return in SelectTypeOpConversion

    • +
    • Transform fir.unboxchar to a sequence of LLVM MLIR

    • +
    • Add fir.global_len conversion placeholder

    • +
    • Add the FIR LLVMPointer Type

    • +
    • Add fir.cmpc conversion

    • +
    • Add fir.gentypedesc conversion

    • +
    • Transform fir.boxchar_len to a sequence of LLVM MLIR

    • +
    • Add missing HasParent in fir_DTEntryOp

    • +
    • Add fir.string_lit conversion

    • +
    • Add conversion patterns for slice, shape, shapeshift and shift ops

    • +
    • Add fir.box_tdesc conversion

    • +
    • !fir.tdesc type conversion

    • +
    • Add fir.constc conversion

    • +
    • Add fir.embox conversion

    • +
    • Notify conversion failure for Proc ops, types

    • +
    • Add tests for mlir::ComplexType conversion

    • +
    • Add fir.end conversion placeholder

    • +
    • Transform fir.field_index to a sequence of LLVM MLIR

    • +
    • Add a factory class for creating Complex Ops

    • +
    • Add fir.no_reassoc conversion

    • +
    • Set !fir.len_param_index conversion to unimplemented

    • +
    • Add base for runtime builder unittests

    • +
    • Add fir transformational intrinsic builder

    • +
    • Add assignment runtime API builder

    • +
    • Add data flow optimization pass

    • +
    • Add array value copy pass

    • +
    • Add fir reduction builder

    • +
    • Add fir numeric intrinsic runtime call builder

    • +
    • Add fircg.ext_embox conversion

    • +
    • Add fir derived type runtime builder

    • +
    • Add fir character builder

    • +
    • Add fircg.ext_array_coor conversion

    • +
    • Upstream conversion of the XRebox Op

    • +
    • Convert fir.allocmem and fir.freemem operations to calls to malloc and free, respectively

    • +
    +
  • +
  • Runtime

    +
      +
    • Fix vector cshift runtime with non zero lower bounds

    • +
    • Respect NO_STOP_MESSAGE=1 in runtime

    • +
    • Runtime performance improvements to real formatted input

    • +
    • Allow write after non advancing read in IO runtime

    • +
    • Fix reversed comparison in RESHAPE() runtime

    • +
    • Define & implement a lowering support API IsContiguous() in runtime

    • +
    • Don’t close stderr in runtime (fixes STOP output)

    • +
    • Return arrays in Transfer runtime with SIZE argument

    • +
    • Fix INQUIRE(FILE=,NAME=)

    • +
    • Add ragged array runtime functions

    • +
    +
  • +
  • Allow exterior branch to outermost WHERE construct statement

  • +
  • Fix ORDER= argument to RESHAPE

  • +
  • Fix rounding edge case in F output editing

  • +
  • Handle ENTRY names in IsPureProcedure() predicate

  • +
  • Allow implicit procedure pointers to associate with explicit procedures

  • +
  • Fix a bug in INQUIRE(IOLENGTH=) output

  • +
  • Remove default argument from function template specialization

  • +
  • Check ArrayRef base for contiguity in IsSimplyContiguousHelper

  • +
  • Deal with negative character lengths in semantics

  • +
  • Fix INQUIRE(PAD=) and (POSITION=) for predefined units

  • +
  • Add a semantics test for co_sum

  • +
  • Fix off-by-one results from folding MAXEXPONENT and MINEXPONENT

  • +
  • Skip Fortran STOP: before message when NO_STOP_MESSAGE is set

  • +
  • Fix printing of constc and parsing of #fir.real

  • +
  • Predefine unit 0 connected to stderr

  • +
  • Add -fno-automatic, refine IsSaved()

  • +
  • Correct the argument keyword for AIMAG(Z=…)

  • +
  • Inclusive language: remove instances of master

  • +
  • Return true in IsSymplyContiguous for allocatables

  • +
  • Fix usage & catch errors for MAX/MIN with keyword= arguments

  • +
  • Re-fold bounds expressions in DATA implied DO loops

  • +
  • Correct INQUIRE(POSITION= & PAD=)

  • +
  • Rearrange prototype & code placement of IsCoarray()

  • +
  • Replace notifyMatchFailure with TODO hard failures

  • +
  • TargetRewrite: Rewrite fir.address_of(func)

  • +
  • Fix folding of EXPONENT() intrinsic function

  • +
  • OPEN(RECL=) handling for sequential formatted I/O

  • +
  • Avoid potential deadlock in CloseAll()

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+
    +
  • Beginning of refactoring of ASR (Abstract Semantic Representation) into a standalone library

  • +
  • New intrinsics: mvbits, bge, bgt, ble, blt, ibits

  • +
  • generic procedure resolution fixes

  • +
  • FreeBSD fixes

  • +
  • Implement .xor. (LFortran as well as GFortran extension)

  • +
  • Fixes to large integers (BigInt) handling

  • +
  • Added support for private, final attributes in derived types/classes

  • +
+

The following people contributed code in December 2021: Ondřej Čertík, Gagandeep Singh, Harris Snyder

+

We are looking for new contributors. Please do not hesitate to contact us if +you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • fpm has a new documentation website hosted at +fpm.fortran-lang.org. +This website will provide user-oriented tutorials and how-to guides, as well +as developer-oriented reference documents and specifications. +We welcome all contributions to the fpm documentation, including translations +to other languages. +Please visit the fpm-docs repo to +get started.

  • +
  • We had our 21st Fortran Monthly call on December 14. +You can watch the recording below:

    + +
  • +
  • We also wrote a review of the Fortran-lang projects in 2021. Read it +here.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/news/2022/02-01-Fortran-Newsletter-February-2022/index.html new file mode 100644 index 000000000000..cda5f41cb59e --- /dev/null +++ b/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -0,0 +1,994 @@ + + + + + + + + + Fortran newsletter: February 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: February 2022#

+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
    +
  • #369: +Resolves Issue #217

  • +
  • #359: +Fix time calculation in the PRs script

  • +
+
+

Work in progress#

+
    +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #276: +Probability Distribution and Statistical Functions – Exponential Distribution Module

  • +
  • #605: +[stdlib_math] Add function diff

  • +
  • #613: +Ignore hash testing binaries and logs

  • +
  • #617: +Made format constant public

  • +
  • #622: +Fix Gauss quadrature

  • +
+
+

Work in progress#

+
    +
  • #611 (WIP): +Hash maps

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+ +
+

Work in progress#

+
    +
  • #654 (WIP): +Ignore hidden source files

  • +
  • #653 (WIP): +Enable profiles in toml

  • +
  • #652 (WIP): +Get user name and email using got config if available else use defaults

  • +
  • #648 (WIP): +Add note about relocation of manifest reference

  • +
  • #622 (WIP): +Cleanup the backend output

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+ +

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • FIR

    +
      +
    • Keep runtime function name in comment

    • +
    • Add a conversion for !fir.coordinate_of

    • +
    • Add a new memory allocation rewrite pass.

    • +
    • Correct and reenable test that was removed by MLIR.

    • +
    • Fix overallocation by fir-to-llvm-ir pass

    • +
    +
  • +
  • OpenMP

    +
      +
    • Add some semantic checks for threadprivate and declare target directives

    • +
    +
  • +
  • Simplify RaggedArrayHeader and make it plain C struct

  • +
  • Fix folding of ac-implied-do indices in structure constructors

  • +
  • Avoid code duplication in mixed expressions

  • +
  • Add test with shape for allocmem and freemem

  • +
  • Make the frontend driver error out when requesting multiple actions

  • +
  • Add semantics tests for co_reduce, co_min, and co_max

  • +
  • Use GNUInstallDirs to support custom installation dirs.

  • +
  • Enable support for conversion of recursive record types

  • +
  • Separate temporary and user-specified object files

  • +
  • update to reflect MLIR LLVM::GEPOp changes

  • +
  • Do not lose call in shape inquiry on function reference

  • +
  • Fix the documentation on how to build flang

  • +
  • Add tests for converting arrays and refs to arrays

  • +
  • Make the “flang” wrapper script check the Bash version

  • +
  • Fix handling of space between # and name in preprocessor stringification

  • +
  • RESHAPE(PAD=) can be arbitrary array rank

  • +
  • Any type can appear in a structure constructor for an unlimited polymorphic allocatable component

  • +
  • Implement semantics for DEC STRUCTURE/RECORD

  • +
  • Extension: initialization of LOGICAL with INTEGER & vice versa

  • +
  • Allow initialization in blank COMMON

  • +
  • Support extension intrinsic function variations on ABS

  • +
  • Allow pointers to non-sequence types in sequence types

  • +
  • “CFI” types for Fortran REAL and COMPLEX kinds 2, 3, 10, 16

  • +
  • Legacy extension: non-character formats

  • +
  • Signal runtime error on WRITE after ENDFILE

  • +
  • Don’t blank-fill remaining lines in internal output

  • +
  • Accept ENTRY names in generic interfaces

  • +
  • Support substring references in NAMELIST input

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+

Compiling stdlib with lfortran

+ +

Addition of ASR Optimization Passes

+ +

libasr

+ +

Miscellaneous

+ +

Contributors

+ +

We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • fpm has a new documentation website hosted at +fpm.fortran-lang.org. +This website will provide user-oriented tutorials and how-to guides, as well +as developer-oriented reference documents and specifications. +We welcome all contributions to the fpm documentation, including translations +to other languages. +Please visit the fpm-docs repo to +get started.

  • +
  • We had our 22st Fortran Monthly call on January 17. +You can watch the recording below:

    + +
  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/news/2022/03-09-Fortran-Newsletter-March-2022/index.html new file mode 100644 index 000000000000..b323e1dffcd6 --- /dev/null +++ b/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -0,0 +1,1009 @@ + + + + + + + + + Fortran newsletter: March 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: March 2022#

+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new in the fortran-lang.org repo:

+
    +
  • #369: +Resolves Issue #217

  • +
  • #359: +Fix time calculation in the PRs script

  • +
+
+

Work in progress#

+
    +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #624: +[stdlib_math] Minor update to stdlib_math module and document

  • +
+
+

Work in progress#

+
    +
  • #625 (WIP): +Gamma special function

  • +
  • #611 (WIP): +Hash maps

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #652: +get user name and email using git config if available else use defaults

  • +
  • #654: +Ignore hidden source files

  • +
  • #622: +Cleanup the backend output

  • +
  • #648: +Add note about relocation of manifest reference

  • +
+ +
+

Work in progress#

+
    +
  • #665 (WIP): +add clean command

  • +
  • #653 (WIP): +Enable profiles in toml

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+ +

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • FIR

    +
      +
    • Initial lowering for empty program

    • +
    • Upstream partial lowering of COMMAND_ARGUMENT_COUNT intrinsic

    • +
    • Add lowering placeholders

    • +
    • Add lowering for basic empty SUBROUTINE

    • +
    • Upstream partial lowering of EXIT intrinsic

    • +
    • Lower basic STOP statement

    • +
    • Lower PAUSE statement

    • +
    • Add lowering for integer constant

    • +
    • Lower integer constant code for STOP stmt

    • +
    • Add fir.array_access op

    • +
    • Add fir.array_amend operation definition

    • +
    • Handle logical constant value for quiet in STOP stmt

    • +
    • Upstream partial lowering of GET_COMMAND_ARGUMENT intrinsic

    • +
    • Basic local variable lowering

    • +
    • Add lowering for ASCII character constant

    • +
    • Handle character constant for error code in STOP stmt

    • +
    • Upstream partial lowering of GET_ENVIRONMENT_VARIABLE intrinsic

    • +
    • Add missing CFI case for REAL and COMPLEX

    • +
    • Add support for lowering the goto statement

    • +
    • Add type conversion for !fir.box

    • +
    • Add FIRInlinerInterface

    • +
    • Lower simple RETURN statement

    • +
    • Upstream fix to allocmem codegen to deal with missing dimensions for sequence of character types

    • +
    • Lower basic function with scalar integer/logical return value

    • +
    • Enable scalar real type in lowering

    • +
    • Enable complex type in function lowering

    • +
    • Handle lowering of ranked array

    • +
    • Lower simple scalar assignment

    • +
    • Lower scalar negation

    • +
    • Lower basic binary operation for scalars

    • +
    • Initial patch to lower a Fortran intrinsic

    • +
    • Lower real constant

    • +
    • Lower complex constant

    • +
    • Lower function and subroutine calls

    • +
    • Handle allocatable dummy arguments

    • +
    • Lower allocatable assignment for scalar

    • +
    • Simple array assignment lowering

    • +
    • Lower simple character return

    • +
    • Lower Fortran intrinsic to a runtime call/llvm intrinsic

    • +
    • Lower integer comparison operation

    • +
    • Lower real comparison operations

    • +
    • Lower logical comparison and logical operations

    • +
    • Lower power operations

    • +
    • Add complex operations lowering tests

    • +
    • Lower basic IO statement

    • +
    • Handle dynamic array lowering

    • +
    +
  • +
  • Driver

    +
      +
    • Add support for -emit-mlir

    • +
    • Add support for -emit-llvm

    • +
    • Make flang-new always generate run-time type info

    • +
    • Add support for --target/--triple

    • +
    +
  • +
  • OpenMP

    +
      +
    • Added OpenMP 5.0 specification based semantic checks for atomic update construct

    • +
    • The device expression must evaluate to a non-negative integer value

    • +
    • Remove clauses from OpenMP Dialect that are handled by the flang frontend instead:

      +
        +
      • private, firstprivate, lastprivate, shared, default, copyin, copyprivate

      • +
      +
    • +
    +
  • +
  • Runtime

    +
      +
    • Implement a runtime routine to report fatal errors with source position

    • +
    • Rename the runtime routine that reports a fatal user error

    • +
    • runtime perf: larger I/O buffer growth increments

    • +
    • Add runtime interface for GET_COMMAND

    • +
    • Upstream runtime changes for inquiry intrinsics

    • +
    +
  • +
  • Improve error message (initialized variable in pure subprogram)

  • +
  • Accept BOZ literals for some actual arguments

  • +
  • Accept sparse argument keyword names for MAX/MIN

  • +
  • Accept INDEX(…, BACK=array)

  • +
  • Fix OPEN/WRITE(SIGN=’SUPPRESS’)

  • +
  • Handle FLUSH(unknown unit)

  • +
  • Allow explicit ‘+’ in NAMELIST input subscripts

  • +
  • Extension: skip over NAMELIST groups

  • +
  • Add array operations documentation

  • +
  • Fix crash from USE-associated defined I/O subprograms

  • +
  • Allow INQUIRE() on a child unit in user-defined I/O procedure

  • +
  • Don’t drop format string for external child I/O

  • +
  • Support DECIMAL=’COMMA’ mode in namelist I/O

  • +
  • Update tco tool pipline and add translation to LLVM IR

  • +
  • Add MemoryAllocation pass to the pipeline

  • +
  • Add ieee_is_normal/ieee_is_negative to ieee_arithmetic module.

  • +
  • Add a custom target for the “flang” wrapper script.

  • +
  • split character procedure arguments in target-rewrite pass

  • +
  • Expand the semantics test for co_sum

  • +
  • Correct interpretation of RECL=

  • +
  • Distinguish intrinsic from non-intrinsic modules

  • +
  • Make NEWUNIT= use a range suitable for INTEGER(KIND=1) and recycle unit numbers

  • +
  • Modify right modes for READ/WRITE vs OPEN

  • +
  • Add a semantics test for co_broadcast

  • +
  • catch implicit interface incompatibility with global scope symbol

  • +
  • Add an assert to guard against nullptr dereferencing

  • +
  • Fix FlangOptimizerTests link on Solaris

  • +
  • Handle “type(foo) function f” when foo is defined in f

  • +
  • Refine pointer/target test for ASSOCIATED intrinsic

  • +
  • Allow mixed association of procedure pointers and targets

  • +
  • Fix edge case in USE-associated generics

  • +
  • Fail at link time if derived type descriptors were not generated

  • +
  • Allow for deferred-length character in EstablishDescriptor

  • +
  • Allow DATA initialization of derived types w/ allocatable components

  • +
  • Accept NULL(mold=x) as constant component value in constant structure constructor

  • +
  • Ensure a characterized ENTRY in a PURE subprogram is also marked PURE

  • +
  • Accept structure constructor value for polymorphic component

  • +
  • Remove deprecated parser/printer/verifier utilities

  • +
  • Accept pointer assignment w/ remapping to function result

  • +
  • Allow extension cases of EQUIVALENCE with optional warnings

  • +
  • Handle CALL C_F_POINTER(without SHAPE=)

  • +
  • Make source location more accurate for actual arguments

  • +
  • Add Win32 to the list of supported triples

  • +
  • Allow tabs as white space in formats

  • +
  • Do not print format tabs

  • +
  • Catch I/O of bad derived type at compile time

  • +
  • Allow more concurrently open NEWUNIT= values, with recycling

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+
    +
  • LFortran is participating in GSoC, please see GSoC 2022 Student Instructions for LFortran for instructions how to apply

  • +
  • 19 Merge Requests merged

  • +
  • New ASR optimizations

  • +
  • Addes support for fma (fused-multiply add) in LLVM

  • +
  • Semantic improves to compile more of stdlib

  • +
+

We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • Fortran-lang has been selected as a mentoring organization for Google Summer of Code 2022! +Thanks to everybody who helped prepare the application. +GSoC is Google’s global, online program that allows newcomers to open-source to work on a project and get paid for it. +See the Fortran-lang GSoC 2022 page for information about the projects and how to apply. +Applications for contributors open April 4 and close April 19. +To learn more about GSoC and what has changed since last year, please see the GSoC 2022 announcement. +If you’d like to participate as a contributor or a mentor, please let us know in this thread and we’ll help you get started.

  • +
  • Fortran-lang community now maintains a modernized fork of the classic library +minpack. Give it a try!

  • +
  • We had our 23rd Fortran Monthly call on February 15. +You can watch the recording below:

    + +
  • +
  • US Fortran Standards Committee meeting #226 started on February 28. +See the draft agenda here +and the submitted papers here.

  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/news/2022/04-07-Fortran-Newsletter-April-2022/index.html new file mode 100644 index 000000000000..f738cefe769a --- /dev/null +++ b/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -0,0 +1,966 @@ + + + + + + + + + Fortran newsletter: April 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: April 2022#

+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new in the fortran-lang.org repo:

+
    +
  • #379: +Newsletter for March 2022

  • +
  • #383: +Updated VS Code extensions

  • +
  • #381: +add string array to learn

  • +
  • #384: +Resolves typos #377

  • +
+
+

Work in progress#

+
    +
  • #369 (WIP): +Resolves Issue #217

  • +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #632: +doc: fix some typos

  • +
  • #629: +option to disable testing by setting BUILD_TESTING to OFF

  • +
  • #631: +Preparation for 0.2.0 release

  • +
  • #637: +Only set Fortran arguments for Fortran compiler

  • +
  • #642: +Fix linking issue with shared libraries

  • +
+
+

Work in progress#

+
    +
  • #625 (WIP): +Gamma special function

  • +
  • #611 (WIP): +Hash maps

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #675: +Fix for backtrace error when file not found in: src/fpm_source_parsing.f90

  • +
  • #677: +Fix issue with backend pretty output

  • +
  • #684: +fix: remove remove unnecessary space in fpm new cmd

  • +
  • #8 (setup-fpm): +Update to v4 in usage example in README

  • +
+
+

Work in progress#

+
    +
  • #685 (WIP): +fix: function for getting executable path

  • +
  • #676 (WIP): +Tree shaking for modules

  • +
  • #671 (WIP): +Add library-dir to support -Lpath

  • +
  • #665 (WIP): +add clean command

  • +
  • #653 (WIP): +Enable profiles in toml

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • FIR

    +
      +
    • Lower IO open and close statements

    • +
    • Lower basic IO file statements

    • +
    • Lower inquire statement

    • +
    • Handle module in lowering pass

    • +
    • Lower more cases of assignments on allocatable variables

    • +
    • Add lowering for host association

    • +
    • Lower allocate and deallocate statements

    • +
    • Lower sum intrinsic

    • +
    • Lower computed and assigned goto

    • +
    • Lower associate construct

    • +
    • Update ArrayValueCopy to support array_amend and array_access

    • +
    • Lower more array character cases

    • +
    • Lower basic derived types

    • +
    • Lower where statement

    • +
    • Lower general forall statement

    • +
    • Lower pointer component in derived type

    • +
    • Lower of elemental calls in array expression

    • +
    • Add tests for allocatable global

    • +
    • Add support for linkonce_odr in FIR

    • +
    • Lower elemental calls

    • +
    • Lower ALL intrinsic

    • +
    • Lower common block

    • +
    • Lower format statement

    • +
    • Write a pass to annotate constant operands on FIR ops

    • +
    • Lower ANY intrinsic

    • +
    • Add support for lowering the dot_product intrinsic

    • +
    • Add support for lowering the dim intrinsic

    • +
    • Add support for lowering of the ibits intrinsic

    • +
    • Lower more pointer assignments/disassociation cases

    • +
    • Lower entry statement

    • +
    • Lower alternate return

    • +
    • Lower allocated intrinsic

    • +
    • Add lowering for the following character related intrinsics: len, len_trim, lge, lgt, lle and llt

    • +
    • Adds lowering for min/max intrinsics: max, maxloc, maxval, minloc, minval

    • +
    • Lower random_[init|number|seed] intrinsics

    • +
    • Lower date_and_time and cpu_time intrinsics

    • +
    • Lower system_clock intrinsic

    • +
    • Add support for lowering of the ibset intrinsic

    • +
    • Lower transfer instrinsic

    • +
    • Lower adjustl and adjustr intrinsics

    • +
    • Lower count intrinsic

    • +
    • Add lowering for the set_exponent intrinsic

    • +
    +
  • +
  • Driver

    +
      +
    • Add support for -debug-dump-pft

    • +
    • Add support for -S and implement -c/-emit-obj

    • +
    • Add support for -mllvm

    • +
    +
  • +
  • OpenMP

    +
      +
    • [mlir]Generating enums in accordance with the guidelines

    • +
    • Added basic connect to lower OpenMP constructs

    • +
    • Support for dump OpenMP/OpenACC declarative directives PFT in module

    • +
    • Add OpenMP and OpenACC flags to bbc

    • +
    +
  • +
  • Allow data transfer stmt control list errors to be caught

  • +
  • Extension: don’t require commas between most edit descriptors in formats

  • +
  • Fix result type of “procedure(abs) :: f”

  • +
  • Catch READ/WRITE on direct-access file without REC=

  • +
  • Honor RECL= in list-directed/namelist output

  • +
  • Accommodate module subprograms defined in the same module

  • +
  • Extend ProvenanceRange::Suffix() to handle crash case

  • +
  • Remove bogus messages for actual/dummy procedure argument compatibility

  • +
  • Support PDT type descriptors in codegen

  • +
  • Handle optional TARGET associate in ASSOCIATED runtime

  • +
  • Generate PDT runtime type info in the type definition scope

  • +
  • Accommodate arrays with a zero-extent dimension in location folding

  • +
  • Avoid crash case in provenance mapping

  • +
  • Make per-argument intrinsic error messages more localized

  • +
  • Use faster path for default formatted character input

  • +
  • Runtime validation of SPREAD(DIM=dim) argument

  • +
  • Make uninitialized allocatable components explicitly NULL() in structure constructors

  • +
  • Fix module file missing USE for shadowed derived type

  • +
  • Add nonfatal message classes

  • +
  • Distinguish usage and portability warning messages

  • +
  • Use unix logical representation for fir.logical

  • +
  • Fix extent computation in finalization

  • +
  • Fix processing ModuleLikeUnit evaluationList

  • +
  • Do not return true for pointer sub-object in IsPointerObject

  • +
  • Fix DYLIB builds

  • +
  • Improve runtime crash messages

  • +
  • Add runtime support for GET_COMMAND

  • +
  • IEEE_ARITHMETIC must imply USE IEEE_EXCEPTIONS

  • +
  • LBOUND() edge case: empty dimension

  • +
  • Hanlde COMPLEX 2/3/10 in runtime TypeCode(cat, kind)

  • +
  • fulfill -Msave/-fno-automatic in main programs too

  • +
  • Relax fir.rebox verifier with characters

  • +
+

Call notes are recorded and available upon request here. Please contact Alexis Perry-Holby at aperry@lanl.gov for document access.

+
+
+

LFortran#

+

We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • The “State of Fortran” paper by Kedward et al. has been accepted for publication in the IEEE journal Computing in Science and Engineering (CiSE). +You can read the pre-print on arXiv, or find the paper in Early Access on the CiSE website.

  • +
  • The contributor application window for this year’s Google Summer of Code is approaching fast. +It opens April 4 and closes April 19. +See the Fortran-lang GSoC 2022 page for information about the projects and how to apply. +To learn more about GSoC and what has changed since last year, please see the GSoC 2022 announcement. +If you’d like to participate, please let us know and we’ll help you get started.

  • +
  • We had our 24th Fortran Monthly call on March 15. +You can watch the recording below:

    + +
  • +
+

As usual, subscribe to the mailing list and/or +join the Discourse to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/news/2022/05-05-Fortran-Newsletter-May-2022/index.html new file mode 100644 index 000000000000..52ee373707e8 --- /dev/null +++ b/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -0,0 +1,1082 @@ + + + + + + + + + Fortran newsletter: May 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: May 2022#

+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new in the fortran-lang.org repo:

+
    +
  • #359: +Fix time calculation in the PRs script

  • +
  • #387: +Newsletter for April 2022

  • +
  • #389: +Add librsb to package index

  • +
  • #390: +Add Elk to package index

  • +
  • #391: +Add pencil-code to package index

  • +
  • #392: +Add PROPACK to package index

  • +
  • #398: +Add feed link to HTML head element

  • +
  • #369: +Resolves Issue #217

  • +
  • #400: +fix dependency of include files under learn/building_programs mini-book

  • +
+

Work in progress:

+
    +
  • #397 (WIP): +Add NUFFT to package index

  • +
  • #396 (WIP): +Add OpenFFT to package index

  • +
  • #395 (WIP): +Add 2DECOMP&FFT to package index

  • +
  • #394 (WIP): +Add SLICOT to package index

  • +
  • #393 (WIP): +Add FATODE to package index

  • +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #646: +Export symbols on Windows and set PIC flag for Unix

  • +
  • #651: +Bugfix release version 0.2.1

  • +
+

Work in progress:

+
    +
  • #656 (WIP): +Add hint for building error with make

  • +
  • #655 (WIP): +fixed 32-bit integer overflow in stdlib_io_npy

  • +
  • #652 (WIP): +Feature: loadtxt skiprows and max_rows

  • +
  • #625 (WIP): +Gamma special function

  • +
  • #611 (WIP): +Hash maps

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #688: +Small fix for fpm_model

  • +
  • #665: +add clean command

  • +
+

Work in progress:

+
    +
  • #693 (WIP): +Fix show-model option

  • +
  • #692 (WIP): +Fix for non-portable GFortran -J flag in install script

  • +
  • #686 (WIP): +fix: remove extra space from help-test cmd

  • +
  • #685 (WIP): +fix: function for getting executable path

  • +
  • #676 (WIP): +Tree shaking for modules

  • +
  • #671 (WIP): +Add library-dir to support -Lpath

  • +
  • #653 (WIP): +Enable profiles in toml

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Flang#

+

Recent development updates:

+
    +
  • FIR

    +
      +
    • Lower various intrinsics:

      +
        +
      • character related intrinsics, array related intrinsics, index intrinsics, present, exit, btest, ceiling, nearest, scale, matmul, trim, transpose, command, environment, repeat, aint, anint, cmplx, conjg, dble, dprod, sign, spacing, rrspacing, merge intrinsics, lbound, ubound, ior, exp, log, log10, sqrt, atan, sinh, cosh, sin, cos, mvbits, achar

      • +
      +
    • +
    • Add IO lowering test

    • +
    • Add more lowering tests for dummy arguments

    • +
    • Add equivalence lowering tests

    • +
    • Add array constructor lowering tests

    • +
    • Lower more array expressions

    • +
    • Lower statement function

    • +
    • Lower length on character storage

    • +
    • Lower select case statement

    • +
    • Add OpenMP Conversion patterns

    • +
    • Lower procedure designator

    • +
    • Lower boxed procedure

    • +
    • Flush and master constructs

    • +
    • Add lowering C interoperability test

    • +
    • Add misc lowering tests

    • +
    • Handle zero extent case in LBOUND

    • +
    • Lower some coarray statements to their runtime function

    • +
    • Options to lower math intrinsics to relaxed, precise variants

    • +
    • Lower optionals in GET_COMMAND_ARGUMENT and GET_ENVIRONMENT_VARIABLE

    • +
    • Added lowering support for atomic read and write constructs

    • +
    • fix LBOUND lowering with KIND and no DIM arguments

    • +
    • Keep fully qualified !fir.heap type for fir.freemem op

    • +
    • Update the conversion code for fir.coordinate_of

    • +
    • Set lower bounds of array section fir.embox to one

    • +
    • Fix fir.embox codegen with constant interior shape

    • +
    • Do not fold fir.box_addr when it has a slice

    • +
    +
  • +
  • Driver

    +
      +
    • Make –version and -version consistent with clang

    • +
    • Add support for -mmlir

    • +
    • Make the plugin API independent of the driver internals

    • +
    • Add support for generating executables

    • +
    +
  • +
  • OpenMP

    +
      +
    • Lowering critical construct

    • +
    • Added assembly format for omp.wsloop and remove parseClauses

    • +
    • Added lowering support for sections construct

    • +
    • Added ReductionClauseInterface

    • +
    • Added parallel sections translation

    • +
    • Revert “[Flang][openmp] Add semantic check for OpenMP Private, Firstprivate and Lastprivate clauses.”

    • +
    • Added allocate clause translation for OpenMP block constructs

    • +
    • Support export/import OpenMP Threadprivate Flag

    • +
    • Add implementation of privatisation

    • +
    • Add checks and tests for hint clause and fix empty hint

    • +
    +
  • +
  • OpenACC

    +
      +
    • Lower enter data directive

    • +
    • Lower exit data directive

    • +
    • Lower init/shutdown directive

    • +
    • Lower update directive

    • +
    • Lower data directive

    • +
    • Lower wait directive

    • +
    +
  • +
  • Runtime

    +
      +
    • Error recovery improvement in runtime (IOMSG=)

    • +
    • Initial UTF-8 support in runtime I/O

    • +
    • Ensure PointerDeallocate actually deallocate pointers

    • +
    • Add runtime API to catch unit number out of range

    • +
    • Prefer process time over thread time in CPU_TIME

    • +
    • Raise FP exceptions from runtime conversion to binary

    • +
    • Preserve effect of positioning in record in non-advancing output

    • +
    • Don’t skip input spaces when they are significant

    • +
    • Fix ENDFILE for formatted stream output

    • +
    • Don’t emit empty lines for bad writes

    • +
    • Ignore leading spaces even in BZ mode

    • +
    • Fix edge-case FP input bugs

    • +
    • Enforce some limits on kP scale factors

    • +
    • Signal record read overrun when PAD=’NO’

    • +
    • Fix KIND=16 real/complex component I/O

    • +
    • Fix total MAXLOC/MINLOC for non-integer data

    • +
    +
  • +
  • Handle allocatable components when creating array temps

  • +
  • [Parser] Add a node for individual sections in sections construct

  • +
  • Add explanatory messages to grammar for language extensions

  • +
  • Convert RUNTIME_CHECK to better error for user errors in transformational.cpp

  • +
  • Accept legacy aliases for intrinsic function names

  • +
  • Expose error recovery cases in external I/O

  • +
  • Fix crash: ENTRY with generic interface of the same name

  • +
  • Fold DBLE

  • +
  • Single construct translation from PFT to FIR

  • +
  • UBOUND() edge case: empty dimension

  • +
  • Make not yet implemented messages more consistent

  • +
  • Fix LBOUND rewrite on descriptor components

  • +
  • Ensure descriptor lower bounds are LBOUND compliant

  • +
  • Fix cycle-catcher in procedure characterization

  • +
  • Fix bogus error from assignment to CLASS(*)

  • +
  • Mark C_ASSOCIATED specific procedures as PURE

  • +
  • Catch bad OPEN(STATUS=) cases

  • +
  • Fold NEAREST() and its relatives

  • +
  • Prevent undefined behavior in character MAXLOC folding

  • +
  • Fix invalid overflow check

  • +
  • Skip D when including D debug line

  • +
  • Allow user to recover from bad edit descriptor with INTEGER

  • +
  • Fold instantiated PDT character component length when needed

  • +
  • Add one semantic check for allocatable/pointer argument association

  • +
  • [cmake] Make CMake copy “omp_lib.h” into the build directory

  • +
  • Handle dynamically optional argument in EXIT

  • +
  • Fix semantic analysis for “forall” targeted by “label”

  • +
  • Emit a portability warning for padding in COMMON

  • +
  • Expand the num_images test coverage

  • +
  • Fold IBITS() intrinsic function

  • +
  • Error handling for out-of-range CASE values

  • +
  • Respect left tab limit with Tn editing after ADVANCE=’NO’

  • +
  • Allow IMPLICIT NONE(EXTERNAL) with GenericDetails

  • +
  • Do not ICE on out-of-range data statement designator

  • +
  • Fix ICE for sqrt(0.0) evaluation

  • +
  • Fix float-number representation bug

  • +
  • Fix intrinsic interface for DIMAG/DCONJG

  • +
  • Improve appearance of message attachments

  • +
  • Fix combining cases of USE association & generic interfaces

  • +
  • Defer all function result type processing

  • +
  • Always encode multi-byte output in UTF-8

  • +
  • Fix shape analysis of RESHAPE result

  • +
  • Use full result range for clock_gettime implementation of SYSTEM_CLOCK

  • +
  • Correct interaction between generics and intrinsics

  • +
  • Make F0.1 output editing of zero edge case consistent

  • +
  • Inner INTRINSIC must not shadow host generic

  • +
  • Local generics must not shadow host-associated generics

  • +
  • Fix TYPE/CLASS IS (T(…)) in SELECT TYPE

  • +
  • Allow modification of construct entities

  • +
  • Defer NAMELIST group item name resolution

  • +
  • Accept TYPE(intrinsic type) in declarations only for non-extension type

  • +
  • Finer control over error recovery with GetExpr()

  • +
  • Handle parameter-dependent types in PDT initializers

  • +
  • Upgrade short actual character arguments to errors

  • +
  • Allow POINTER attribute statement on procedure interfaces

  • +
  • Accept KIND type parameter inquiries on RE, IM, etc.

  • +
  • Add & use a better visit()

  • +
  • Fix regression with recent work on intrinsic/generic interactions

  • +
  • Do not pass derived type by descriptor when not needed

  • +
  • Fix LBOUND() folding for constant arrays

  • +
  • Set LBOUND() folding for (x) expression as ones

  • +
  • Semantics limits on kP scale factors

  • +
  • Do not ICE on recursive function definition in function result

  • +
  • Fold transformational bessels when host runtime has bessels

  • +
  • Do not create arith.extui with same from/to type

  • +
  • Disambiguate F(X)=Y case where F is a function returning a pointer

  • +
  • Avoid global name conflict when BIND(C,NAME=) is used

  • +
  • Accept “INFINITY” as real input

  • +
  • Add semantic checks for intrinsic function REDUCE()

  • +
  • Fix crash from PDT component init in module file

  • +
+

Call notes are recorded and publicly available here.

+
+
+

LFortran#

+

Compiling stdlib with lfortran

+ +

Addition of ASR Optimization Passes

+ +

libasr

+ +

WASM

+ +

Miscellaneous

+ +

Contributors

+ +

We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • We had our 25th Fortran Monthly call on April 22. +You can watch the recording below:

    + +
  • +
  • Visual Studio Code’s popular Modern Fortran extension joined the fortran-lang GitHub organization.

  • +
+

Join and follow the Fortran Discourse +to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/news/2022/06-09-Fortran-Newsletter-June-2022/index.html new file mode 100644 index 000000000000..913017bfe14b --- /dev/null +++ b/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -0,0 +1,1203 @@ + + + + + + + + + Fortran newsletter: June 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + + + + + + +
+ +
+ +
+

Fortran newsletter: June 2022#

+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+
+

fortran-lang.org#

+

Here’s what’s new in the fortran-lang.org repo:

+
    +
  • #401: +Newsletter May 2022

  • +
  • #403: +Add SeisSol to package index

  • +
+

Work in progress:

+
    +
  • #397 (WIP): +Add NUFFT to package index

  • +
  • #396 (WIP): +Add OpenFFT to package index

  • +
  • #395 (WIP): +Add 2DECOMP&FFT to package index

  • +
  • #394 (WIP): +Add SLICOT to package index

  • +
  • #393 (WIP): +Add FATODE to package index

  • +
  • #347 (WIP): +Fortran Intrinsics

  • +
+

Let us know +if you have any suggestions for the website and its content. +We welcome any new contributors to the website and the tutorials page in particular - see the +contributor guide +for how to get started.

+
+
+

Fortran Standard Library#

+

Here’s what’s new in stdlib:

+
    +
  • #656: +Add hint for building error with make

  • +
  • #655: +fixed 32-bit integer overflow in stdlib_io_npy

  • +
  • #657: +Remove support for manual make builds

  • +
+

Work in progress:

+
    +
  • #660 (WIP): +Fix erroneous gaussian quadrature points in gauss_legendre

  • +
  • #659 (WIP): +Readme update

  • +
  • #652 (WIP): +Feature: loadtxt skiprows and max_rows

  • +
  • #625 (WIP): +Gamma special function

  • +
  • #611 (WIP): +Hash maps

  • +
  • #604 (WIP): +Add get_argument, get_variable and set_variable

  • +
  • #580 (WIP): +Add terminal and color escape sequences

  • +
  • #552 (WIP): +fixed bug in stringlist

  • +
  • #536 (WIP): +Fix conversion warnings

  • +
  • #520 (WIP): +[stdlib_io] add disp(display variable values formatted).

  • +
  • #517 (WIP): +adding SPEC_TEMPLATE.md #504

  • +
  • #514 (WIP): +pop, drop & get with basic range feature for stringlist

  • +
  • #491 (WIP): +Stdlib linked list

  • +
  • #473 (WIP): +Error stop improvements

  • +
  • #363 (WIP): +Sorting string’s characters according to their ASCII values

  • +
  • #286 (WIP): +Probability Distribution and Statistical Functions – Beta Distribution Module

  • +
  • #278 (WIP): +Probability Distribution and Statistical Functions – Gamma Distribution Module

  • +
  • #189 (WIP): +Initial implementation of COO / CSR sparse format

  • +
+

Please help improve stdlib by testing and reviewing pull requests!

+

The candidate for file system operations to be included in stdlib is being developed by +@MarDiehl and @arjenmarkus +in this repository. +Please try it out and let us know how it works, if there are any issues, or if the API can be improved.

+
+
+

Fortran Package Manager#

+

Here’s what’s new in fpm:

+
    +
  • #692: +Fix for non-portable GFortran -J flag in install script

  • +
  • #693: +Fix show-model option

  • +
+

Work in progress:

+
    +
  • #701 (WIP): +Some cleanups and minor fixes

  • +
  • #686 (WIP): +fix: remove extra space from help-test cmd

  • +
  • #685 (WIP): +fix: function for getting executable path

  • +
  • #653 (WIP): +Enable profiles in toml

  • +
  • #608 (WIP): +–env switch lets you specify the prefix of the compiler-related environment variables

  • +
  • #539 (WIP): +Add parent packages into dependency tree

  • +
  • #498 (WIP): +Compiler flags profiles

  • +
+

fpm is still in early development and we need as much help as we can get. +Here’s how you can help today:

+
    +
  • Use it and let us know what you think! Read the fpm packaging guide +to learn how to build your package with fpm, and the manifest reference +to learn what are all the things that you can specify in the fpm.toml file.

  • +
  • Browse existing fpm packages on the fortran-lang website

  • +
  • Browse the open issues and see if you can help implement any fixes or features.

  • +
  • Adapt your Fortran package for fpm and submit it to the Registry.

  • +
  • Improve the documentation.

  • +
+

The short-term goal of fpm is to make development and installation of Fortran packages with dependencies easier. +Its long term goal is to build a rich and decentralized ecosystem of Fortran packages and create a healthy +environment in which new open source Fortran projects are created and published with ease.

+
+
+

Compilers#

+
+

Flang#

+
    +
  • FIR

    +
      +
    • Initial lowering of the Fortran Do loop

    • +
    • Lower Unstructured do loops

    • +
    +
  • +
  • Driver

    +
      +
    • Define the default frontend driver triple

    • +
    • Add support for consuming LLVM IR/BC files

    • +
    • Add support for -save-temps

    • +
    • Switch to the MLIR coding style in the driver

    • +
    • Fix driver method names overridden by the plugins

    • +
    • Support parsing response files

    • +
    • Make driver accept -module-dir

    • +
    • Add support for generating executables on MacOSX/Darwin

    • +
    +
  • +
  • OpenMP

    +
      +
    • Add lowering stubs for OpenMP/OpenACC declarative constructs

    • +
    • Added tests for taskwait and taskyield translation

    • +
    • Restrict types for omp.parallel args

    • +
    • Add omp.cancel and omp.cancellationpoint.

    • +
    • Initial lowering of the OpenMP worksharing loop

    • +
    • Lowering for task construct

    • +
    • Support lowering to MLIR for ordered clause

    • +
    • Support for Collapse

    • +
    • Upstream the lowering of the parallel do combined construct

    • +
    • Fix the types of worksharing-loop variables

    • +
    • Change the OpenMP atomic read/write test cases

    • +
    +
  • +
  • Runtime

    +
      +
    • Correct emission & reading of unterminated final records

    • +
    • Support B/O/Z editing of CHARACTER

    • +
    • Use 1-based dim in transformational runtime error msg

    • +
    • Change “unsupported” messages in the runtime to “not yet implemented”

    • +
    • Fix input of NAN(…) on non-fast path

    • +
    • Don’t pad CHARACTER input at end of record unless PAD=’YES’

    • +
    • Enforce restrictions on unlimited format repetition

    • +
    • (G0) for CHARACTER means (A), not (A0)

    • +
    • BACKSPACE after non-advancing I/O

    • +
    • Use proper prototypes in Fortran_main. NFCI

    • +
    • Clean up asynchronous I/O APIs

    • +
    • INQUIRE(UNIT=666,NUMBER=n) must set n=666

    • +
    • Handle BACKSPACE after reading past EOF

    • +
    +
  • +
  • Fix MAXLOC/MINLOC when MASK is scalar .FALSE.

  • +
  • Fix UBOUND() constant folding for parentheses expr

  • +
  • Support FINDLOC/MAXLOC/MINLOC with scalar mask

  • +
  • Handle common block with different sizes in same file

  • +
  • Add one semantic check for implicit interface

  • +
  • Fix semantics check for RETURN statement

  • +
  • Fix ICE for passing a label for non alternate return arguments

  • +
  • Add ExternalNameConversionPass to pass pipeline

  • +
  • Fix AllocaOp/AllocMemOp type conversion

  • +
  • Support external procedure passed as actual argument with implicit character type

  • +
  • Fix internal error with DATA-statement style initializers

  • +
  • Upstream support for POINTER assignment in FORALL

  • +
  • Enforce a program not including more than one main program

  • +
  • Retain binding label of entry subprograms

  • +
  • Fold intrinsic inquiry functions SAME_TYPE_AS() and EXTENDS_TYPE_OF()

  • +
  • Fold intrinsic functions SPACING() and RRSPACING()

  • +
  • Operands of SIGN() need not have same kind

  • +
  • Correct folding of SPREAD() for higher ranks

  • +
  • Refine handling of short character actual arguments

  • +
  • Ensure that structure constructors fold parameter references

  • +
  • Correct actual/dummy procedure compatibility for ALLOCATABLE/POINTER functions

  • +
  • Allow PDTs with LEN parameters in REDUCE()

  • +
  • Allow NULL() actual argument for optional dummy procedure

  • +
  • Allow implicit declaration of DATA objects in inner procedures

  • +
  • Refine error checking in specification expressions

  • +
  • Reverse a reversed type compatibility check

  • +
  • Accept POINTER followed by INTERFACE

  • +
  • Allow ENTRY function result symbol usage before the ENTRY

  • +
  • Fold real-valued DIM(), MODULO() and MOD()

  • +
  • Enforce limit on rank + corank

  • +
  • Allow local variables and function result inquiries in specification expressions

  • +
  • Change “bad kind” messages in the runtime to “not yet implemented”

  • +
  • Fold complex component references

  • +
  • Fix check for assumed-size arguments to SHAPE() & al.

  • +
  • Fix a performance problem with lowering of forall loops and creating too many temporaries

  • +
  • Warn for the limit on name length

  • +
  • Install Fortran_main library

  • +
  • test conforming & non-conforming lcobound

  • +
  • Fix use-associated false-positive error

  • +
  • Fix character length calculation for Unicode component

  • +
  • Allow global scope names that clash with intrinsic modules

  • +
  • Ignore BIND(C) binding name conflicts of inner procedures

  • +
  • Allow more forward references to ENTRY names

  • +
  • Extension: Accept Hollerith actual arguments as if they were BOZ

  • +
  • Alternate entry points with unused arguments

  • +
  • Fix crash in semantics after PDT instantiation

  • +
+
+
+

LFortran#

+
    +
  • Gagandeep Singh (106):

    +
      +
    • Factored out visit_Declaration to visit_DeclarationUtil in CommonVisitor

    • +
    • Added test for kwargs in class procedure

    • +
    • Added support for kwargs in class procedures

    • +
    • Updated reference tests

    • +
    • Added support for i32 and i64 in repeat

    • +
    • Added mergechar in merge interface

    • +
    • Added is_iostat_eor

    • +
    • Removed compulsory evaluation of ishft

    • +
    • Updated reference tests

    • +
    • Use intrinsic type checking in assignment only when operator overloading fails

    • +
    • Perform casting in Compare only when overloaded is not available

    • +
    • Set dest_type and source_type even though casting doesn’t happen

    • +
    • Use kind_value to generate type in ArraySize

    • +
    • Added test for verifying SemanticError in case of non-constant kind input

    • +
    • Updated reference tests

    • +
    • Add AssociateBlock and Block in serialization.cpp

    • +
    • Include associate_06 in the integration_tests/CMakeLists.txt

    • +
    • Take into account output kind in LLVM’s ArraySize visitor

    • +
    • Added test for different output kinds in ArraySize

    • +
    • Updated reference tests

    • +
    • Import procedures for overloaded operators as well

    • +
    • Fixed tests for compiling correctly with gfortran

    • +
    • Mangle name before importing procedures under generic procs

    • +
    • Merged master into sprint_6

    • +
    • Avoid manual imports while using overloaded symbols

    • +
    • Remove symbol from to_be_imported_later

    • +
    • Added support for keyword arguments in generic procedures and fix total arguments

    • +
    • Added test for generic procedures with keyword arguments

    • +
    • Updated reference tests

    • +
    • Added intrinsics: congjz, dotproduct and updated: merge

    • +
    • Added matmul, transpose as ASR nodes

    • +
    • Added tests for matmul and transpose

    • +
    • Updated reference tests

    • +
    • Added merge, dotproduct procedures for complex type

    • +
    • Updated reference tests

    • +
    • Add support for source kwarg in allocate

    • +
    • Updated test for verifying source argument

    • +
    • Updated reference tests

    • +
    • Registered shiftr, shiftl, adjustr, lgt, llt, lge, lle, count in comptime_eval.h

    • +
    • Added shiftl, shiftr and count

    • +
    • Added more implementations for abs, mod

    • +
    • Added adjustr, lgt, llt, lle, lge for string type

    • +
    • Updated reference tests

    • +
    • Registered ieee_is_nan in comptime_eval.h

    • +
    • Added support for pack intrinsic

    • +
    • Added support for transfer intrinsic

    • +
    • Use modern Fortran syntax for array constants

    • +
    • Updated reference tests

    • +
    • ArrayTransfer -> Transfer rename

    • +
    • Added generation code for expression replacer

    • +
    • Added ReplaceArgVisitor and generalised handle_return_type

    • +
    • Added tests for verifying arg replacer in return types

    • +
    • Updated reference tests

    • +
    • Added cmplx via ComplexConstructor node

    • +
    • Updated reference tests

    • +
    • Import via use inside Function

    • +
    • Added support for matching Derived/ClassType

    • +
    • Added support for falling back to intrinsic

    • +
    • Added to test verify importing procedures inside function

    • +
    • Updated reference tests

    • +
    • Added support for passing kind parameter to floor intrinsic

    • +
      1. +
      2. Use CPtr for variables declared with type(c_ptr) 2. Set Module_t.m_intrinsic in set_intrinsic 3. Add CPtr in extract_dimensions_from_ttype

      3. +
      +
    • +
    • Updated reference tests

    • +
    • Added LLVM support for CLoc, CPtr

    • +
    • Updated reference tests

    • +
    • Added integration test for c_f_pointer

    • +
    • Added support for c_f_pointer

    • +
    • Updated reference tests

    • +
    • Added error checking for presence of shape argument in c_f_pointer call

    • +
    • Fixed ArrayConstant type and raise error is shape is not rank 1

    • +
    • Updated reference tests

    • +
    • Implemented c_f_pointer for non-array variables

    • +
    • Updated reference tests

    • +
    • Added test with pointer array variables

    • +
    • Shifted type generation to a function in LLVM backend

    • +
    • Corrected llvm::Type* for array pointer variables

    • +
    • Updated reference tests

    • +
      1. +
      2. Fixed ArrayBound for array pointers 2. Shifted argument type generation to a function and use recursion for Pointer

      3. +
      +
    • +
    • Added support for printing Pointer type

    • +
      1. +
      2. Added AssociateBlock symbol in PassVisitor 2. Fixed get_bound to return ArrayBound instead of a function call

      3. +
      +
    • +
    • Use element type in ArrayRef instead of pointer

    • +
    • Syntax improvement

    • +
    • Updated reference tests

    • +
    • Removed warnings

    • +
    • Adjust ArrayBound for ArrayConstant

    • +
    • Corrected arrays_13 by making iv, rv as target

    • +
    • Stronger verification checks for CFPointer creation

    • +
    • Support for array inputs in CFPointer

    • +
    • Improved bindc2 for array inputs in c_f_pointer

    • +
      1. +
      2. Fixed ArraySize for array pointer variables in LLVM backend. 2. Improved CFPointer in LLVM backend to not interfere with already stored array in array pointer variables 3. Improved bindc2.f90 and made it robust to cover more cases. 4. Updated reference tests

      3. +
      +
    • +
    • Fixed unused variable warnings in llvm_utils.cpp

    • +
    • Use abstract methods in CFPointer for accessing array descriptor data

    • +
    • Added test for ArrayRef in c_loc

    • +
    • Minor update in bindc2 and bindc3

    • +
    • Fixed Complex case in duplicate type and intialise type at declaration

    • +
    • Added support ArrayRef in CLoc in LLVM backend

    • +
    • Updated reference tests

    • +
      1. +
      2. Added support for CPtr in arguments and fixed llvm::Type for intent(out) for CPtr 2. Added support for constant arrays as shape in c_f_pointer

      3. +
      +
    • +
    • Updated bindc4 for verifying constant arrays in c_f_pointer

    • +
    • Updated reference tests

    • +
    +
  • +
  • Naman Gera (1):

    +
      +
    • Update the C runtime library

    • +
    +
  • +
  • Ondřej Čertík (136):

    +
      +
    • AST->ASR: Remove current_body

    • +
    • Fix a bug in a test

    • +
    • Update tests

    • +
    • bind(c): Add tests for i64, f32, f64

    • +
    • Update modules_18b.f90 to compile

    • +
    • Add tests for the other types

    • +
    • Comment out a non-working case

    • +
    • Update tests

    • +
    • bind(c): Fix call_fortran_i64

    • +
    • Update tests

    • +
    • bind(c): Add a test for i32 by value

    • +
    • LLVM: implement value arguments in bind(c) procs

    • +
    • Update tests

    • +
    • Make modules_18b.f90 compile

    • +
    • bind(c): test i64, f32, f64 by value

    • +
    • Update modules_18b to compile

    • +
    • Update tests

    • +
    • ASR: Bring updates from LPython

    • +
    • Update tests

    • +
    • ASR: Updates from LPython

    • +
    • Update the rest of the code to compile

    • +
    • Update tests

    • +
    • C++ backend: implement ComplexConstructor

    • +
    • Add the simplest test for submodules

    • +
    • Add Logical to nested_vars

    • +
    • Workaround a cmake bug

    • +
    • Add a test for bind(c) with pointers

    • +
    • Rework the AST->ASR handling of floor()

    • +
    • Implement is_intrinsic_symbol()

    • +
    • Refactor floor() into lfortran_intrinsic_math3

    • +
    • Update tests

    • +
    • Add a test case for imported derived type

    • +
    • Add value to all expr nodes except Constant

    • +
    • Update tests

    • +
    • Implement expr_type() using ExprTypeVisitor

    • +
    • Implement expr_value() using ExprValueVisitor

    • +
    • iso_c_binding: add the c_loc() function

    • +
    • Allow derived types as return values

    • +
    • ASR: Represent c_loc()

    • +
    • Add ASR test for c_loc()

    • +
    • Update tests

    • +
    • ASR: Add string conversion for derived type

    • +
    • Add a CPtr() type

    • +
    • Make c_loc() return CPtr

    • +
    • LLVM: handle CPtr in convert_args()

    • +
    • LLVM: Comment out visit_CFPointer (WIP)

    • +
    • CI: pin mkdocs-material and mkdocs versions

    • +
    • Fix spelling

    • +
    • Update tests

    • +
    • Shorten the help for –show-wat to fit 80 columns

    • +
    • Git ignore wasm_visitor.h

    • +
    • Move emit_wat out of LLVM ifdef

    • +
    • Generate wasm_visitor.h in ci/build.xsh

    • +
    • Enable WAT tests in run_tests.py

    • +
    • Add a test for WASM

    • +
    • Update reference tests

    • +
    • Implement FortranEvaluator::get_wasm()

    • +
    • Use asr_to_wasm_bytes_stream() in asr_to_wasm

    • +
    • WASM: Add 64 bit BinOp operations

    • +
    • WASM: handle i64 arguments

    • +
    • WASM: Add a test for i64

    • +
    • Move the wasm_instructions_visitor.py to libasr

    • +
    • Update ASR from LPython

    • +
    • Update tests

    • +
    • Bring more ASR improvements from LPython

    • +
    • Bring in name mangling

    • +
    • Update tests

    • +
    • Add a test for passing through pointers via C

    • +
    • LLVM: implement debug ASR printing

    • +
    • LLVM: Use deftype to implement interfaces

    • +
    • LLVM: Pass type(c_ptr) by value properly

    • +
    • Pass “n” by reference for now

    • +
    • Pass arguments by value for bind(c)

    • +
    • Only do the load if it is a pointer

    • +
    • LLVM: Use an ASR condition instead of LLVM one

    • +
    • lfortran_intrinsic_string: depend iso_fortran_env

    • +
    • Enable bindc_01 LLVM test

    • +
    • Add a test for pointer argument

    • +
    • Add suffixes 1/2

    • +
    • Add a callback2b test

    • +
    • Add a test for callback1b()

    • +
    • Get value to reference argument working

    • +
    • Port ASR improvements from LPython

    • +
    • Update the rest of the code to compile

    • +
    • Update tests

    • +
    • ASR sync with LPython

    • +
    +
  • +
  • Tapasweni Pathak (9):

    +
      +
    • Add markdown sample for intrinsic:math:asin

    • +
    • Add doxygen docstring in lfortran intrinsic runtime asin

    • +
    • Add comments for interface asin

    • +
    • Add doxygen comment for lfortran_sasin_api

    • +
    • Enhance presentation of information

    • +
    • use retval for return values variable

    • +
    • delete fortran doxygen comments docs

    • +
    • mkdocs: LFortran Intrinsics: asin

    • +
    • add: mkdocs: code syntax highlighting

    • +
    +
  • +
  • Ubaid (24):

    +
      +
    • Improve ceiling() test case

    • +
    • Update reference tests

    • +
    • Specifying constants as double precision

    • +
    • Update error condition check as suggested

    • +
    • Update reference tests

    • +
    • Code formatting

    • +
    • Add and improve namespace ending comments

    • +
    • Add wasm_instructions list

    • +
    • Comment out few instructions that have temporary variables

    • +
    • Add wasm_instructions_visitor script

    • +
    • Add namespace related info and pass code as function parameter in wasm_insts_visitor script

    • +
    • Add command in build0.sh to generate wasm_visitor.h

    • +
    • Add utility struct and functions defined in wasm_utils

    • +
    • Add wasm_to_wat converter

    • +
    • Include wasm_to_wat and wasm_utils in CMakeLists.txt

    • +
    • Define vector.resize()

    • +
    • Add –show-wat flag and emit_wat() function

    • +
    • Declare and define get_wat() in fortran_evaluator

    • +
    • Declare and define asr_to_wasm_bytes_stream() which stores wasm binary to memory

    • +
    • Fix warning by adding U and add comment

    • +
    • Fix missing parameters bug

    • +
    • Switch off WAT_DEBUG macro

    • +
    • Remove debugging cout statements

    • +
    • Move load_file() to top

    • +
    +
  • +
+

We are looking for new contributors. Please do not hesitate to contact us if you are interested. We will help you get up to speed.

+
+
+
+

Events#

+
    +
  • The Fortran-lang Google Summer of Code 2022 program began on May 23. +We welcome five contributors: Arteev Raina, Ashirwad Mishra, +Henil Shalin Panchal, Mohd Ubaid Shaikh, and Oshanath Rajawasam. +They will be working on exciting projects from fpm and the Fortran +website to improving the LFortran compiler. +Read more about their projects here.

  • +
  • We had our 26th Fortran Monthly call on May 16. +Watch the recording below:

    + +
  • +
+

Join and follow the Fortran Discourse +to stay tuned with the future meetings.

+
+
+

Contributors#

+

We thank everybody who contributed to fortran-lang in the past month by +commenting in any of these repositories:

+ +
+
+
+ +
+ + + + + + + + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/2022/index.html b/news/2022/index.html new file mode 100644 index 000000000000..8908af23d470 --- /dev/null +++ b/news/2022/index.html @@ -0,0 +1,1002 @@ + + + + + + + + Posted in 2022 — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posted in + + 2022 + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2022 +

+ +
+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/archive/index.html b/news/archive/index.html new file mode 100644 index 000000000000..028318996d89 --- /dev/null +++ b/news/archive/index.html @@ -0,0 +1,936 @@ + + + + + + + + All posts — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + + +
+

+ Posted in + 2022 +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+

+ + 07 April 2022 + + - + Fortran newsletter: April 2022 +

+
+ +
+

+ + 09 March 2022 + + - + Fortran newsletter: March 2022 +

+
+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+ + + +
+

+ Posted in + 2021 +

+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 December 2021 + + - + Fortran newsletter: December 2021 +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 October 2021 + + - + Fortran newsletter: October 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 August 2021 + + - + Fortran newsletter: August 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 March 2021 + + - + Fortran newsletter: March 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+ + + +
+

+ Posted in + 2020 +

+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+

+ + 01 July 2020 + + - + Fortran newsletter: July 2020 +

+
+ +
+

+ + 01 June 2020 + + - + Fortran newsletter: June 2020 +

+
+ +
+

+ + 01 May 2020 + + - + Fortran newsletter: May 2020 +

+
+ +
+

+ + 18 April 2020 + + - + Open Source Directions Fortran webinar +

+
+ +
+

+ + 06 April 2020 + + - + FortranCon 2020 +

+
+ +
+

+ + 28 February 2020 + + - + J3 February 2020 Meeting +

+
+ +
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/atom.xml b/news/atom.xml new file mode 100644 index 000000000000..bcb4b84bf934 --- /dev/null +++ b/news/atom.xml @@ -0,0 +1,741 @@ + + + https://fortran-lang.org/en/ + Blog + 2023-05-22T09:12:47.982068+00:00 + + + ABlog + + https://fortran-lang.org/en/news/2022/06-09-Fortran-Newsletter-June-2022/ + Fortran newsletter: June 2022 + 2022-06-09T00:00:00+00:00 + + Alexis Perry-Holby + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new in the fortran-lang.org repo:</p> +</div> + + + Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new in the fortran-lang.org repo: + 2022-06-09T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2022/05-05-Fortran-Newsletter-May-2022/ + Fortran newsletter: May 2022 + 2022-05-05T00:00:00+00:00 + + Alexis Perry-Holby + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new in the fortran-lang.org repo:</p> +</div> + + + Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new in the fortran-lang.org repo: + 2022-05-05T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2022/04-07-Fortran-Newsletter-April-2022/ + Fortran newsletter: April 2022 + 2022-04-07T00:00:00+00:00 + + Alexis Perry-Holby + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new in the fortran-lang.org repo:</p> +</div> + + + Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new in the fortran-lang.org repo: + 2022-04-07T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2022/03-09-Fortran-Newsletter-March-2022/ + Fortran newsletter: March 2022 + 2022-03-09T00:00:00+00:00 + + Alexis Perry-Holby + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new in the fortran-lang.org repo:</p> +</div> + + + Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new in the fortran-lang.org repo: + 2022-03-09T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2022/02-01-Fortran-Newsletter-February-2022/ + Fortran newsletter: February 2022 + 2022-02-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new and ongoing in the fortran-lang.org repo:</p> +</div> + + + Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new and ongoing in the fortran-lang.org repo: + 2022-02-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2022/01-01-Fortran-Newsletter-January-2022/ + Fortran newsletter: January 2022 + 2022-01-01T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new and ongoing in the fortran-lang.org repo:</p> +</div> + + + Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new and ongoing in the fortran-lang.org repo: + 2022-01-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/12-29-Fortran-lang-2021-in-review/ + Fortran-lang: 2021 in review + 2021-12-29T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>=(Fortran-lang-2021-in-review)</p> +<p>With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.</p> +</div> + + + =(Fortran-lang-2021-in-review)With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach. + 2021-12-29T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/12-01-Fortran-Newsletter-December-2021/ + Fortran newsletter: December 2021 + 2021-12-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>Here’s what’s new and ongoing in the fortran-lang.org repo:</p> +</div> + + + Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.Here’s what’s new and ongoing in the fortran-lang.org repo: + 2021-12-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/11-01-Fortran-Newsletter-November-2021/ + Fortran newsletter: November 2021 + 2021-11-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-11-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/10-01-Fortran-Newsletter-October-2021/ + Fortran newsletter: October 2021 + 2021-10-01T00:00:00+00:00 + + Alexis Perry-Holby + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-10-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/09-01-Fortran-Newsletter-September-2021/ + Fortran newsletter: September 2021 + 2021-09-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-09-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/08-01-Fortran-Newsletter-August-2021/ + Fortran newsletter: August 2021 + 2021-08-01T00:00:00+00:00 + + Laurence Kedward + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-08-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/07-01-Fortran-Newsletter-July-2021/ + Fortran newsletter: July 2021 + 2021-07-01T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-07-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/06-01-Fortran-Newsletter-June-2021/ + Fortran newsletter: June 2021 + 2021-06-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-06-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/05-18-Welcome-GSoC-students/ + Fortran-lang welcomes new students to Google Summer of Code 2021 + 2021-05-18T00:00:00+00:00 + + Arjen Markus + + <div class="ablog-post-excerpt docutils container"> +<p>We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:</p> +<p><a class="reference external" href="https://github.com/aman-godara">Aman Godara</a> will work on strings in the +<a class="reference external" href="https://github.com/fortran-lang/stdlib">Fortran Standard Library</a>. Aman’s +mentors will be <a class="reference external" href="https://github.com/awvwgk">Sebastian Ehlert</a> and +<a class="reference external" href="https://github.com/milancurcic">Milan Curcic</a>.</p> +</div> + + + We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic. + 2021-05-18T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/05-01-Fortran-Newsletter-May-2021/ + Fortran newsletter: May 2021 + 2021-05-01T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-05-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/04-20-First-Year/ + First year of the Fortran website + 2021-04-20T00:00:00+00:00 + + Laurence Kedward + + <div class="ablog-post-excerpt docutils container"> +<p>In April 2020 we created a website for the Fortran language at +<a class="reference external" href="https://fortran-lang.org/">fortran-lang.org</a>. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).</p> +<p>The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.</p> +</div> + + + In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us. + 2021-04-20T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/04-01-Fortran-Newsletter-April-2021/ + Fortran newsletter: April 2021 + 2021-04-01T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-04-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/ + Fortran-lang accepted to Google Summer of Code 2021 + 2021-03-09T00:00:00+00:00 + + Arjen Markus + + <div class="ablog-post-excerpt docutils container"> +<p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> +<p>You can review our project ideas +<a class="reference external" href="https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2021-Project-ideas">here</a>, +and if you have any ideas that are not mentioned, please let us know.</p> +</div> + + + We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know. + 2021-03-09T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/03-01-Fortran-Newsletter-March-2021/ + Fortran newsletter: March 2021 + 2021-03-01T00:00:00+00:00 + + Laurence Kedward + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had several updates to the website:</p> +</div> + + + Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had several updates to the website: + 2021-03-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/02-01-Fortran-Newsletter-February-2021/ + Fortran newsletter: February 2021 + 2021-02-01T00:00:00+00:00 + + Sebastian Ehlert + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had a few updates to the website:</p> +</div> + + + Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had a few updates to the website: + 2021-02-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2021/01-01-Fortran-Newsletter-January-2021/ + Fortran newsletter: January 2021 + 2021-01-01T00:00:00+00:00 + + Gary Klimowicz + + <div class="ablog-post-excerpt docutils container"> +<p>Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had a few updates to the website:</p> +</div> + + + Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had a few updates to the website: + 2021-01-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/12-01-Fortran-Newsletter-December-2020/ + Fortran newsletter: December 2020 + 2020-12-01T00:00:00+00:00 + + Gary Klimowicz + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had a few updates to the website:</p> +</div> + + + Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.This month we’ve had a few updates to the website: + 2020-12-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/11-01-Fortran-Newsletter-November-2020/ + Fortran newsletter: November 2020 + 2020-11-01T00:00:00+00:00 + + Jeremie Vandenplas + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.</p> +<p>This month we’ve had a few additions and improvements to the website:</p> +</div> + + + Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.This month we’ve had a few additions and improvements to the website: + 2020-11-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/10-01-Fortran-Newsletter-October-2020/ + Fortran newsletter: October 2020 + 2020-10-01T00:00:00+00:00 + + Gary Klimowicz + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.</p> +<p>This month we’ve had only one minor change to the website:</p> +</div> + + + Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.This month we’ve had only one minor change to the website: + 2020-10-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/09-01-Fortran-Newsletter-September-2020/ + Fortran newsletter: September 2020 + 2020-09-01T00:00:00+00:00 + + Gary Klimowicz + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.</p> +<p>We continued the work on the Fortran-lang website, specifically:</p> +</div> + + + Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.We continued the work on the Fortran-lang website, specifically: + 2020-09-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/08-01-Fortran-Newsletter-August-2020/ + Fortran newsletter: August 2020 + 2020-08-01T00:00:00+00:00 + + Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.</p> +<p>We continued the work on the Fortran-lang website, including:</p> +</div> + + + Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.We continued the work on the Fortran-lang website, including: + 2020-08-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/07-01-Fortran-Newsletter-July-2020/ + Fortran newsletter: July 2020 + 2020-07-01T00:00:00+00:00 + + and Jérémie Vandenplas + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.</p> +<p>Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:</p> +</div> + + + Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.Work has continued on the Fortran-lang website, including a new community page and additional tutorial content: + 2020-07-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/06-01-Fortran-Newsletter-June-2020/ + Fortran newsletter: June 2020 + 2020-06-01T00:00:00+00:00 + + Milan Curcic and Ondřej Čertík + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.</p> +<p>The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the <a class="reference internal" href="../compilers/"><span class="doc std std-doc">Compilers</span></a> page which is now +comprehensive and includes all major open source and commercial compilers. +The <a class="reference internal" href="../learn/"><span class="doc std std-doc">Learn</span></a> page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.</p> +</div> + + + Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources. + 2020-06-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/05-01-Fortran-Newsletter-May-2020/ + Fortran newsletter: May 2020 + 2020-05-01T00:00:00+00:00 + + Milan Curcic + + <div class="ablog-post-excerpt docutils container"> +<p>Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.</p> +<p>If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be <em>the</em> home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and <a class="reference external" href="https://github.com/fortran-lang/fortran-lang.github.io/issues">let us know</a> +if you have any suggestions for improvement. +Specifically, <a class="reference internal" href="../learn/"><span class="doc std std-doc">Learn</span></a> and <a class="reference internal" href="../packages/"><span class="doc std std-doc">Packages</span></a> are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!</p> +</div> + + + Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better! + 2020-05-01T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/04-18-Fortran-Webinar/ + Open Source Directions Fortran webinar + 2020-04-18T00:00:00+00:00 + <div class="ablog-post-excerpt docutils container"> +<p>Ondřej Čertík (<a class="reference external" href="https://twitter.com/ondrejcertik">&#64;ondrejcertik</a>) and +Milan Curcic (<a class="reference external" href="https://twitter.com/realmilancurcic">&#64;realmilancurcic</a>) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.</p> +<p>Watch the episode now:</p> +</div> + + + Ondřej Čertík (@ondrejcertik) and +Milan Curcic (@realmilancurcic) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.Watch the episode now: + 2020-04-18T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/04-06-Announcing-FortranCon-2020/ + FortranCon 2020 + 2020-04-06T00:00:00+00:00 + <div class="ablog-post-excerpt docutils container"> +<p>FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.</p> +<p>FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click <a class="reference external" href="https://tcevents.chem.uzh.ch/event/12/abstracts/">here</a> to submit +an abstract.</p> +</div> + + + FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click here to submit +an abstract. + 2020-04-06T00:00:00+00:00 + + + https://fortran-lang.org/en/news/2020/02-28-J3-february-meeting/ + J3 February 2020 Meeting + 2020-02-28T00:00:00+00:00 + + Ondřej Čertík and Zach Jibben + + <div class="ablog-post-excerpt docutils container"> +<p>The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.</p> +<p>The following people / companies attended:</p> +</div> + + + The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.The following people / companies attended: + 2020-02-28T00:00:00+00:00 + + diff --git a/news/author/alexis-perry-holby/index.html b/news/author/alexis-perry-holby/index.html new file mode 100644 index 000000000000..4e4a44bbbb8c --- /dev/null +++ b/news/author/alexis-perry-holby/index.html @@ -0,0 +1,1576 @@ + + + + + + + + Posts by Alexis Perry-Holby — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Alexis Perry-Holby + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2022 +

+ +
+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/and-jeremie-vandenplas/index.html b/news/author/and-jeremie-vandenplas/index.html new file mode 100644 index 000000000000..caec18dadf56 --- /dev/null +++ b/news/author/and-jeremie-vandenplas/index.html @@ -0,0 +1,596 @@ + + + + + + + + Posts by and Jérémie Vandenplas — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + and Jérémie Vandenplas + +

+ + +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/and-laurence-kedward/index.html b/news/author/and-laurence-kedward/index.html new file mode 100644 index 000000000000..09cc2f99fc2c --- /dev/null +++ b/news/author/and-laurence-kedward/index.html @@ -0,0 +1,719 @@ + + + + + + + + Posts by and Laurence Kedward — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + and Laurence Kedward + +

+ + +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/arjen-markus-and-gary-klimowicz/index.html b/news/author/arjen-markus-and-gary-klimowicz/index.html new file mode 100644 index 000000000000..85c6ab585163 --- /dev/null +++ b/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -0,0 +1,610 @@ + + + + + + + + Posts by Arjen Markus and Gary Klimowicz — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Arjen Markus and Gary Klimowicz + +

+ + +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/arjen-markus/index.html b/news/author/arjen-markus/index.html new file mode 100644 index 000000000000..b7280526adf6 --- /dev/null +++ b/news/author/arjen-markus/index.html @@ -0,0 +1,728 @@ + + + + + + + + Posts by Arjen Markus — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Arjen Markus + +

+ + +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/brad-richardson/index.html b/news/author/brad-richardson/index.html new file mode 100644 index 000000000000..984b270d388d --- /dev/null +++ b/news/author/brad-richardson/index.html @@ -0,0 +1,1201 @@ + + + + + + + + Posts by Brad Richardson — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Brad Richardson + +

+ + +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2020 +

+ +
+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/damian-rouson/index.html b/news/author/damian-rouson/index.html new file mode 100644 index 000000000000..7ccd1a7bc5e2 --- /dev/null +++ b/news/author/damian-rouson/index.html @@ -0,0 +1,631 @@ + + + + + + + + Posts by Damian Rouson — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Damian Rouson + +

+ + +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/gagandeep-singh/index.html b/news/author/gagandeep-singh/index.html new file mode 100644 index 000000000000..b116c29febff --- /dev/null +++ b/news/author/gagandeep-singh/index.html @@ -0,0 +1,691 @@ + + + + + + + + Posts by Gagandeep Singh — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Gagandeep Singh + +

+ + +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/gary-klimowicz/index.html b/news/author/gary-klimowicz/index.html new file mode 100644 index 000000000000..0c9a4b5dca4c --- /dev/null +++ b/news/author/gary-klimowicz/index.html @@ -0,0 +1,1012 @@ + + + + + + + + Posts by Gary Klimowicz — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Gary Klimowicz + +

+ + +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/giannis-nikiteas/index.html b/news/author/giannis-nikiteas/index.html new file mode 100644 index 000000000000..88fdbcb05435 --- /dev/null +++ b/news/author/giannis-nikiteas/index.html @@ -0,0 +1,603 @@ + + + + + + + + Posts by Giannis Nikiteas — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Giannis Nikiteas + +

+ + +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/henil-panchal/index.html b/news/author/henil-panchal/index.html new file mode 100644 index 000000000000..be4f807488de --- /dev/null +++ b/news/author/henil-panchal/index.html @@ -0,0 +1,603 @@ + + + + + + + + Posts by Henil Panchal — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Henil Panchal + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/index.html b/news/author/index.html new file mode 100644 index 000000000000..62629024282a --- /dev/null +++ b/news/author/index.html @@ -0,0 +1,2360 @@ + + + + + + + + Authors — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + + +
+

+ Posts by + Alexis Perry-Holby +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+

+ + 07 April 2022 + + - + Fortran newsletter: April 2022 +

+
+ +
+

+ + 09 March 2022 + + - + Fortran newsletter: March 2022 +

+
+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 01 December 2021 + + - + Fortran newsletter: December 2021 +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 October 2021 + + - + Fortran newsletter: October 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+ + + +
+

+ Posts by + Arjen Markus +

+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+ + + +
+

+ Posts by + Arjen Markus and Gary Klimowicz +

+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+ + + +
+

+ Posts by + Brad Richardson +

+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 June 2020 + + - + Fortran newsletter: June 2020 +

+
+ +
+ + + +
+

+ Posts by + Damian Rouson +

+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+ + + +
+

+ Posts by + Gagandeep Singh +

+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+ + + +
+

+ Posts by + Gary Klimowicz +

+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+ + + +
+

+ Posts by + Giannis Nikiteas +

+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+ + + +
+

+ Posts by + Henil Panchal +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+ + + +
+

+ Posts by + Ivan Pribec +

+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+ + + +
+

+ Posts by + Jeremie Vandenplas +

+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 June 2020 + + - + Fortran newsletter: June 2020 +

+
+ +
+ + + +
+

+ Posts by + Jérémie Vandenplas +

+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+ + + +
+

+ Posts by + Laurence Kedward +

+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 October 2021 + + - + Fortran newsletter: October 2021 +

+
+ +
+

+ + 01 August 2021 + + - + Fortran newsletter: August 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 March 2021 + + - + Fortran newsletter: March 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+

+ + 01 July 2020 + + - + Fortran newsletter: July 2020 +

+
+ +
+ + + +
+

+ Posts by + Marshall Ward +

+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+ + + +
+

+ Posts by + Milan Curcic +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+

+ + 07 April 2022 + + - + Fortran newsletter: April 2022 +

+
+ +
+

+ + 09 March 2022 + + - + Fortran newsletter: March 2022 +

+
+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 December 2021 + + - + Fortran newsletter: December 2021 +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 August 2021 + + - + Fortran newsletter: August 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 March 2021 + + - + Fortran newsletter: March 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+

+ + 01 July 2020 + + - + Fortran newsletter: July 2020 +

+
+ +
+

+ + 01 May 2020 + + - + Fortran newsletter: May 2020 +

+
+ +
+ + + +
+

+ Posts by + Milan Curcic and Ondřej Čertík +

+ +
+

+ + 01 June 2020 + + - + Fortran newsletter: June 2020 +

+
+ +
+ + + +
+

+ Posts by + Ondřej Čertík +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+

+ + 09 March 2022 + + - + Fortran newsletter: March 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 October 2021 + + - + Fortran newsletter: October 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 August 2021 + + - + Fortran newsletter: August 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 March 2021 + + - + Fortran newsletter: March 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+ + + +
+

+ Posts by + Ondřej Čertík and Zach Jibben +

+ +
+

+ + 28 February 2020 + + - + J3 February 2020 Meeting +

+
+ +
+ + + +
+

+ Posts by + Sebastian Ehlert +

+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 December 2021 + + - + Fortran newsletter: December 2021 +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+ + + +
+

+ Posts by + Thomas König +

+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+ + + +
+

+ Posts by + Zachary Moon +

+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+ + + +
+

+ Posts by + and Jérémie Vandenplas +

+ +
+

+ + 01 July 2020 + + - + Fortran newsletter: July 2020 +

+
+ +
+ + + +
+

+ Posts by + and Laurence Kedward +

+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/ivan-pribec/index.html b/news/author/ivan-pribec/index.html new file mode 100644 index 000000000000..f229e8de6fcf --- /dev/null +++ b/news/author/ivan-pribec/index.html @@ -0,0 +1,631 @@ + + + + + + + + Posts by Ivan Pribec — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Ivan Pribec + +

+ + +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/jeremie-vandenplas/index.html b/news/author/jeremie-vandenplas/index.html new file mode 100644 index 000000000000..4cc72f814214 --- /dev/null +++ b/news/author/jeremie-vandenplas/index.html @@ -0,0 +1,1353 @@ + + + + + + + + Posts by Jérémie Vandenplas — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Jérémie Vandenplas + +

+ + +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/laurence-kedward/index.html b/news/author/laurence-kedward/index.html new file mode 100644 index 000000000000..716fcb551e79 --- /dev/null +++ b/news/author/laurence-kedward/index.html @@ -0,0 +1,2022 @@ + + + + + + + + Posts by Laurence Kedward — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Laurence Kedward + +

+ + +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/marshall-ward/index.html b/news/author/marshall-ward/index.html new file mode 100644 index 000000000000..6924c062dbdc --- /dev/null +++ b/news/author/marshall-ward/index.html @@ -0,0 +1,631 @@ + + + + + + + + Posts by Marshall Ward — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Marshall Ward + +

+ + +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/milan-curcic-and-ondrej-certik/index.html b/news/author/milan-curcic-and-ondrej-certik/index.html new file mode 100644 index 000000000000..ab0a3e5d0024 --- /dev/null +++ b/news/author/milan-curcic-and-ondrej-certik/index.html @@ -0,0 +1,602 @@ + + + + + + + + Posts by Milan Curcic and Ondřej Čertík — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Milan Curcic and Ondřej Čertík + +

+ + +
+

+ Fortran newsletter: June 2020 +

+ +
+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/milan-curcic/index.html b/news/author/milan-curcic/index.html new file mode 100644 index 000000000000..dcc4405af0b0 --- /dev/null +++ b/news/author/milan-curcic/index.html @@ -0,0 +1,2928 @@ + + + + + + + + Posts by Milan Curcic — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Milan Curcic + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2022 +

+ +
+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2020 +

+
    +
  • + + + + + 01 May 2020 + +
  • + + +
  • + + + + + + + + Milan Curcic + + + +
  • + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.

+

If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/ondrej-certik-and-zach-jibben/index.html b/news/author/ondrej-certik-and-zach-jibben/index.html new file mode 100644 index 000000000000..21f4ca9c34d2 --- /dev/null +++ b/news/author/ondrej-certik-and-zach-jibben/index.html @@ -0,0 +1,580 @@ + + + + + + + + Posts by Ondřej Čertík and Zach Jibben — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Ondřej Čertík and Zach Jibben + +

+ + +
+

+ J3 February 2020 Meeting +

+ +
+

The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.

+

The following people / companies attended:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/ondrej-certik/index.html b/news/author/ondrej-certik/index.html new file mode 100644 index 000000000000..60498abf97f1 --- /dev/null +++ b/news/author/ondrej-certik/index.html @@ -0,0 +1,2463 @@ + + + + + + + + Posts by Ondřej Čertík — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Ondřej Čertík + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/sebastian-ehlert/index.html b/news/author/sebastian-ehlert/index.html new file mode 100644 index 000000000000..9cc136b4a5f8 --- /dev/null +++ b/news/author/sebastian-ehlert/index.html @@ -0,0 +1,1876 @@ + + + + + + + + Posts by Sebastian Ehlert — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Sebastian Ehlert + +

+ + +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/thomas-konig/index.html b/news/author/thomas-konig/index.html new file mode 100644 index 000000000000..0f69b8b2512e --- /dev/null +++ b/news/author/thomas-konig/index.html @@ -0,0 +1,624 @@ + + + + + + + + Posts by Thomas König — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Thomas König + +

+ + +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/author/zachary-moon/index.html b/news/author/zachary-moon/index.html new file mode 100644 index 000000000000..7a619af460db --- /dev/null +++ b/news/author/zachary-moon/index.html @@ -0,0 +1,610 @@ + + + + + + + + Posts by Zachary Moon — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts by + + Zachary Moon + +

+ + +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/category/index.html b/news/category/index.html new file mode 100644 index 000000000000..a201e5a8d8d0 --- /dev/null +++ b/news/category/index.html @@ -0,0 +1,916 @@ + + + + + + + + Categories — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + + +
+

+ Posts in + newsletter +

+ +
+

+ + 09 June 2022 + + - + Fortran newsletter: June 2022 +

+
+ +
+

+ + 05 May 2022 + + - + Fortran newsletter: May 2022 +

+
+ +
+

+ + 07 April 2022 + + - + Fortran newsletter: April 2022 +

+
+ +
+

+ + 09 March 2022 + + - + Fortran newsletter: March 2022 +

+
+ +
+

+ + 01 February 2022 + + - + Fortran newsletter: February 2022 +

+
+ +
+

+ + 01 January 2022 + + - + Fortran newsletter: January 2022 +

+
+ +
+

+ + 29 December 2021 + + - + Fortran-lang: 2021 in review +

+
+ +
+

+ + 01 December 2021 + + - + Fortran newsletter: December 2021 +

+
+ +
+

+ + 01 November 2021 + + - + Fortran newsletter: November 2021 +

+
+ +
+

+ + 01 October 2021 + + - + Fortran newsletter: October 2021 +

+
+ +
+

+ + 01 September 2021 + + - + Fortran newsletter: September 2021 +

+
+ +
+

+ + 01 August 2021 + + - + Fortran newsletter: August 2021 +

+
+ +
+

+ + 01 July 2021 + + - + Fortran newsletter: July 2021 +

+
+ +
+

+ + 01 June 2021 + + - + Fortran newsletter: June 2021 +

+
+ +
+

+ + 18 May 2021 + + - + Fortran-lang welcomes new students to Google Summer of Code 2021 +

+
+ +
+

+ + 01 May 2021 + + - + Fortran newsletter: May 2021 +

+
+ +
+

+ + 20 April 2021 + + - + First year of the Fortran website +

+
+ +
+

+ + 01 April 2021 + + - + Fortran newsletter: April 2021 +

+
+ +
+

+ + 09 March 2021 + + - + Fortran-lang accepted to Google Summer of Code 2021 +

+
+ +
+

+ + 01 March 2021 + + - + Fortran newsletter: March 2021 +

+
+ +
+

+ + 01 February 2021 + + - + Fortran newsletter: February 2021 +

+
+ +
+

+ + 01 January 2021 + + - + Fortran newsletter: January 2021 +

+
+ +
+

+ + 01 December 2020 + + - + Fortran newsletter: December 2020 +

+
+ +
+

+ + 01 November 2020 + + - + Fortran newsletter: November 2020 +

+
+ +
+

+ + 01 October 2020 + + - + Fortran newsletter: October 2020 +

+
+ +
+

+ + 01 September 2020 + + - + Fortran newsletter: September 2020 +

+
+ +
+

+ + 01 August 2020 + + - + Fortran newsletter: August 2020 +

+
+ +
+

+ + 01 July 2020 + + - + Fortran newsletter: July 2020 +

+
+ +
+

+ + 01 June 2020 + + - + Fortran newsletter: June 2020 +

+
+ +
+

+ + 01 May 2020 + + - + Fortran newsletter: May 2020 +

+
+ +
+

+ + 18 April 2020 + + - + Open Source Directions Fortran webinar +

+
+ +
+

+ + 06 April 2020 + + - + FortranCon 2020 +

+
+ +
+

+ + 28 February 2020 + + - + J3 February 2020 Meeting +

+
+ +
+ + + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/category/newsletter/index.html b/news/category/newsletter/index.html new file mode 100644 index 000000000000..8e7064f686b5 --- /dev/null +++ b/news/category/newsletter/index.html @@ -0,0 +1,3241 @@ + + + + + + + + Posts in newsletter — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + Posts in + + newsletter + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2022 +

+ +
+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2020 +

+ +
+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2020 +

+
    +
  • + + + + + 01 May 2020 + +
  • + + +
  • + + + + + + + + Milan Curcic + + + +
  • + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.

+

If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!

+
+ +

Read more ...

+
+
+ +
+

+ Open Source Directions Fortran webinar +

+
    +
  • + + + + + 18 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Ondřej Čertík (@ondrejcertik) and +Milan Curcic (@realmilancurcic) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.

+

Watch the episode now:

+
+ +

Read more ...

+
+
+ +
+

+ FortranCon 2020 +

+
    +
  • + + + + + 06 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.

+

FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click here to submit +an abstract.

+
+ +

Read more ...

+
+
+ +
+

+ J3 February 2020 Meeting +

+ +
+

The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.

+

The following people / companies attended:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/drafts/index.html b/news/drafts/index.html new file mode 100644 index 000000000000..743a49039f3d --- /dev/null +++ b/news/drafts/index.html @@ -0,0 +1,522 @@ + + + + + + + + Drafts — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + + + Drafts + +

+ + + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/news/index.html b/news/index.html index 1dee56e8adab..458cd21fd55d 100644 --- a/news/index.html +++ b/news/index.html @@ -1,13 +1,3241 @@ - - - - - + + + + + + + All Posts — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+

+ + All + + Posts + +

+ + +
+

+ Fortran newsletter: June 2022 +

+ +
+

Welcome to the June edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2022 +

+ +
+

Welcome to the May edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2022 +

+ +
+

Welcome to the April edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2022 +

+ +
+

Welcome to the March edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2022 +

+ +
+

Welcome to the February 2022 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2022 +

+ +
+

Happy New Year and welcome to the January 2022 edition of the monthly Fortran +newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang: 2021 in review +

+ +
+

=(Fortran-lang-2021-in-review)

+

With another year behind us, let’s review the progress that the +Fortran-lang community has made. +If you’re new to Fortran-lang, here’s a quick intro: +We’re an open source community that aims to develop modern Fortran tooling and +nurture a rich ecosystem of libraries, as well as to provide a friendly, +helpful, and inclusive space for newcomers and experienced Fortran programmers +to work together. +We started in late 2019 and have been going ever since. +If you’re first discovering (or re-discovering) Fortran through this article, +welcome, and we hope it inspires you to try Fortran for one of your projects. +In this article we summarize new developments from 2021, +from flagship and new projects to community development and outreach.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2021 +

+ +
+

Welcome to the December 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

Here’s what’s new and ongoing in the fortran-lang.org repo:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2021 +

+ +
+

Welcome to the November 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2021 +

+ +
+

Welcome to the October 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2021 +

+ +
+

Welcome to the September 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2021 +

+ +
+

Welcome to the August 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2021 +

+ +
+

Welcome to the July 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2021 +

+ +
+

Welcome to the June 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang welcomes new students to Google Summer of Code 2021 +

+ +
+

We’re happy to announce six students that will work on Fortran projects under +the Google Summer of Code 2021 program:

+

Aman Godara will work on strings in the +Fortran Standard Library. Aman’s +mentors will be Sebastian Ehlert and +Milan Curcic.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2021 +

+ +
+

Welcome to the May 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ First year of the Fortran website +

+ +
+

In April 2020 we created a website for the Fortran language at +fortran-lang.org. In exactly one year, it grew to +be the first result when you search “Fortran” in Bing, Yahoo, DuckDuckGo, +Ecosia, Qwant, SearchEncrypt and the second result in Google (after the +Wikipedia page for Fortran).

+

The goal of the website is to maintain a neutral place where any Fortran user +(expert or novice), compiler vendor (open source or commercial), Fortran +Standards Committee member, enthusiast, supporter or anybody else interested +is welcome to participate. Fortran was invented in 1956, and we aim to be the +stewards of the language and we welcome you to join us.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: April 2021 +

+ +
+

Welcome to the April 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran-lang accepted to Google Summer of Code 2021 +

+ +
+

We are excited to announce that Fortran-lang has been accepted as a Google Summer of Code (GSoC) 2021 mentoring organization! 🎉

+

You can review our project ideas +here, +and if you have any ideas that are not mentioned, please let us know.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: March 2021 +

+ +
+

Welcome to the March 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had several updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: February 2021 +

+ +
+

Welcome to the February 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: January 2021 +

+ +
+

Happy New Year! +Welcome to the January 2021 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: December 2020 +

+ +
+

Welcome to the December 2020 edition of the monthly Fortran newsletter. +The newsletter comes out at the beginning of every month and details +Fortran news from the previous month.

+

This month we’ve had a few updates to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: November 2020 +

+ +
+

Welcome to the November 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month and details +Fortran news from the previous month.

+

This month we’ve had a few additions and improvements to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: October 2020 +

+ +
+

Welcome to the October 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

This month we’ve had only one minor change to the website:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: September 2020 +

+ +
+

Welcome to the September 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, specifically:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: August 2020 +

+ +
+

Welcome to the August 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

We continued the work on the Fortran-lang website, including:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: July 2020 +

+ +
+

Welcome to the July 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

Work has continued on the Fortran-lang website, including a new community page and additional tutorial content:

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: June 2020 +

+ +
+

Welcome to the June 2020 edition of the monthly Fortran newsletter. +The newsletter comes out on the first calendar day of every month +and details Fortran news from the previous month.

+

The Fortran website has been up since mid-April, and we’ve already got great +feedback from the community. +In the past month we’ve updated the Compilers page which is now +comprehensive and includes all major open source and commercial compilers. +The Learn page has also seen significant updates—it’s been +reorganized for easier navigation and currently features a quickstart tutorial, +Fortran books, and other online resources.

+
+ +

Read more ...

+
+
+ +
+

+ Fortran newsletter: May 2020 +

+
    +
  • + + + + + 01 May 2020 + +
  • + + +
  • + + + + + + + + Milan Curcic + + + +
  • + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Welcome to the first monthly Fortran newsletter. +It will come out on the first calendar day of every month, +detailing Fortran news from the previous month.

+

If you came to this newsletter from elsewhere, welcome to the new Fortran website. +We built this site mid-April and hope for it to be the home of Fortran on the internet, +which traditionally there hasn’t been any to date. +Look around and let us know +if you have any suggestions for improvement. +Specifically, Learn and Packages are the pages that +we’ll be focusing on in the coming months. +Please help us make them better!

+
+ +

Read more ...

+
+
+ +
+

+ Open Source Directions Fortran webinar +

+
    +
  • + + + + + 18 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

Ondřej Čertík (@ondrejcertik) and +Milan Curcic (@realmilancurcic) spoke +yesterday about the future of Fortran in Episode 40 of the Open Source +Directions Webinar. +We discussed the current state of the language, how it’s currently developed, +and what we can do today to build the Fortran community, ecosystem of packages, +and developer tools.

+

Watch the episode now:

+
+ +

Read more ...

+
+
+ +
+

+ FortranCon 2020 +

+
    +
  • + + + + + 06 April 2020 + +
  • + + + + + +
  • + + + + + + + + newsletter + + + +
  • + + + +
+
+

FortranCon 2020, the first international conference targeting the Fortran +programming language, will take place on July 2-4, 2020, in Zürich, Switzerland.

+

FortranCon aims to bring together developers of Fortran libraries, +applications, and language itself to share their experience and ideas. +The conference is organized in two full days of speaker presentations +on July 2 and 3, and a half-day workshop with lectures and hands-on sessions +on July 4. +Click here to submit +an abstract.

+
+ +

Read more ...

+
+
+ +
+

+ J3 February 2020 Meeting +

+ +
+

The J3 Fortran Committee meeting took place in Las Vegas, NV, on February 24-28, 2020.

+

The following people / companies attended:

+
+ +

Read more ...

+
+
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/nl/.doctrees/environment.pickle b/nl/.doctrees/environment.pickle index 5afae48d2d74..291b0b9fc4de 100644 Binary files a/nl/.doctrees/environment.pickle and b/nl/.doctrees/environment.pickle differ diff --git a/nl/community/contributing/index.html b/nl/community/contributing/index.html index f7710f534308..de87a5dd3d46 100644 --- a/nl/community/contributing/index.html +++ b/nl/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/community/history/index.html b/nl/community/history/index.html index 4550037d4c7b..442fc53b681a 100644 --- a/nl/community/history/index.html +++ b/nl/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/community/index.html b/nl/community/index.html index e14dc1cbcb2d..aca4b6776951 100644 --- a/nl/community/index.html +++ b/nl/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/community/minibooks/index.html b/nl/community/minibooks/index.html index c3f99256ad52..12888ca3fe73 100644 --- a/nl/community/minibooks/index.html +++ b/nl/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/community/packages/index.html b/nl/community/packages/index.html index 740214514bd7..defedbfb3333 100644 --- a/nl/community/packages/index.html +++ b/nl/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/compilers/index.html b/nl/compilers/index.html index 77400ed4592e..e9c3ac625242 100644 --- a/nl/compilers/index.html +++ b/nl/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/genindex/index.html b/nl/genindex/index.html index 97b27b0448b9..d46d7f474415 100644 --- a/nl/genindex/index.html +++ b/nl/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/index.html b/nl/index.html index 865791e76d22..b3e9746236cd 100644 --- a/nl/index.html +++ b/nl/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/allocatable_arrays/index.html b/nl/learn/best_practices/allocatable_arrays/index.html index f0d56b197cac..aa2edfa931e1 100644 --- a/nl/learn/best_practices/allocatable_arrays/index.html +++ b/nl/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/arrays/index.html b/nl/learn/best_practices/arrays/index.html index ed2d26f4fad5..f8788d9aecd4 100644 --- a/nl/learn/best_practices/arrays/index.html +++ b/nl/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/callbacks/index.html b/nl/learn/best_practices/callbacks/index.html index bf27c76fa154..089cb53f7d25 100644 --- a/nl/learn/best_practices/callbacks/index.html +++ b/nl/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/element_operations/index.html b/nl/learn/best_practices/element_operations/index.html index c4df5685d848..ae561b089540 100644 --- a/nl/learn/best_practices/element_operations/index.html +++ b/nl/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/file_io/index.html b/nl/learn/best_practices/file_io/index.html index d926ac273cff..f4358b1a5bc7 100644 --- a/nl/learn/best_practices/file_io/index.html +++ b/nl/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/floating_point/index.html b/nl/learn/best_practices/floating_point/index.html index 2dcb66f90bfb..02dacd215ffb 100644 --- a/nl/learn/best_practices/floating_point/index.html +++ b/nl/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/index.html b/nl/learn/best_practices/index.html index fed94ff3c253..0753791bab5c 100644 --- a/nl/learn/best_practices/index.html +++ b/nl/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/integer_division/index.html b/nl/learn/best_practices/integer_division/index.html index d1ee116b2804..b8e131fbb359 100644 --- a/nl/learn/best_practices/integer_division/index.html +++ b/nl/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/modules_programs/index.html b/nl/learn/best_practices/modules_programs/index.html index 7b3dc65027a5..0150c76406e9 100644 --- a/nl/learn/best_practices/modules_programs/index.html +++ b/nl/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/multidim_arrays/index.html b/nl/learn/best_practices/multidim_arrays/index.html index 438fdc91efee..2243a372f944 100644 --- a/nl/learn/best_practices/multidim_arrays/index.html +++ b/nl/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/style_guide/index.html b/nl/learn/best_practices/style_guide/index.html index 8f335555cf7b..c26d2c942e27 100644 --- a/nl/learn/best_practices/style_guide/index.html +++ b/nl/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/best_practices/type_casting/index.html b/nl/learn/best_practices/type_casting/index.html index ae9a51362475..f54c43fd87fc 100644 --- a/nl/learn/best_practices/type_casting/index.html +++ b/nl/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/build_tools/index.html b/nl/learn/building_programs/build_tools/index.html index 07127a4ab126..3325a712882d 100644 --- a/nl/learn/building_programs/build_tools/index.html +++ b/nl/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/compiling_source/index.html b/nl/learn/building_programs/compiling_source/index.html index 72f157ab7ca0..0e5dfe2acedb 100644 --- a/nl/learn/building_programs/compiling_source/index.html +++ b/nl/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/distributing/index.html b/nl/learn/building_programs/distributing/index.html index 8a2837e9bd25..7917da3b8e3b 100644 --- a/nl/learn/building_programs/distributing/index.html +++ b/nl/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/include_files/index.html b/nl/learn/building_programs/include_files/index.html index a9f4a13de66a..f47b38079953 100644 --- a/nl/learn/building_programs/include_files/index.html +++ b/nl/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/index.html b/nl/learn/building_programs/index.html index 0d50d6a87de7..7e6b7bb4594c 100644 --- a/nl/learn/building_programs/index.html +++ b/nl/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/linking_pieces/index.html b/nl/learn/building_programs/linking_pieces/index.html index 7afc447a298f..4d338b57d8a4 100644 --- a/nl/learn/building_programs/linking_pieces/index.html +++ b/nl/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/managing_libraries/index.html b/nl/learn/building_programs/managing_libraries/index.html index a23ce5102922..5621fb67e50e 100644 --- a/nl/learn/building_programs/managing_libraries/index.html +++ b/nl/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/project_make/index.html b/nl/learn/building_programs/project_make/index.html index 20ff216ffc64..7831ccd2e5fc 100644 --- a/nl/learn/building_programs/project_make/index.html +++ b/nl/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/building_programs/runtime_libraries/index.html b/nl/learn/building_programs/runtime_libraries/index.html index d5211bf17e17..b70e711131f3 100644 --- a/nl/learn/building_programs/runtime_libraries/index.html +++ b/nl/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/index.html b/nl/learn/index.html index e2b94da2ff80..94ac2083915b 100644 --- a/nl/learn/index.html +++ b/nl/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/array/index.html b/nl/learn/intrinsics/array/index.html index 924c485949d1..4f762080e64a 100644 --- a/nl/learn/intrinsics/array/index.html +++ b/nl/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/bit/index.html b/nl/learn/intrinsics/bit/index.html index aed510960ad7..f2a8abbf179a 100644 --- a/nl/learn/intrinsics/bit/index.html +++ b/nl/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/cfi/index.html b/nl/learn/intrinsics/cfi/index.html index a2498918955c..ea76337d451c 100644 --- a/nl/learn/intrinsics/cfi/index.html +++ b/nl/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/character/index.html b/nl/learn/intrinsics/character/index.html index 78fb253a25bf..9d15fc8f76b5 100644 --- a/nl/learn/intrinsics/character/index.html +++ b/nl/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/compiler/index.html b/nl/learn/intrinsics/compiler/index.html index e62aa881310f..6486b531cfa0 100644 --- a/nl/learn/intrinsics/compiler/index.html +++ b/nl/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/index.html b/nl/learn/intrinsics/index.html index 1101630964f1..4d7846664571 100644 --- a/nl/learn/intrinsics/index.html +++ b/nl/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/math/index.html b/nl/learn/intrinsics/math/index.html index 6d153f76fab5..77adb4191052 100644 --- a/nl/learn/intrinsics/math/index.html +++ b/nl/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/model/index.html b/nl/learn/intrinsics/model/index.html index 9f1d8616f780..e069bda00fd4 100644 --- a/nl/learn/intrinsics/model/index.html +++ b/nl/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/numeric/index.html b/nl/learn/intrinsics/numeric/index.html index a7b58aac8805..6f9d88b0fe4f 100644 --- a/nl/learn/intrinsics/numeric/index.html +++ b/nl/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/parallel/index.html b/nl/learn/intrinsics/parallel/index.html index 9bf0c5337ea5..f0dfc33bfbec 100644 --- a/nl/learn/intrinsics/parallel/index.html +++ b/nl/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/state/index.html b/nl/learn/intrinsics/state/index.html index 069bdde706e0..419db98c500b 100644 --- a/nl/learn/intrinsics/state/index.html +++ b/nl/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/system/index.html b/nl/learn/intrinsics/system/index.html index 72a7a404380b..1eb00200a68e 100644 --- a/nl/learn/intrinsics/system/index.html +++ b/nl/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/transform/index.html b/nl/learn/intrinsics/transform/index.html index 839b71ed413f..46e798165a82 100644 --- a/nl/learn/intrinsics/transform/index.html +++ b/nl/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/intrinsics/type/index.html b/nl/learn/intrinsics/type/index.html index 4caadd505e46..65c5677c47f4 100644 --- a/nl/learn/intrinsics/type/index.html +++ b/nl/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/choose_compiler/index.html b/nl/learn/os_setup/choose_compiler/index.html index 2176934fe15b..4129e15f0985 100644 --- a/nl/learn/os_setup/choose_compiler/index.html +++ b/nl/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/ides/index.html b/nl/learn/os_setup/ides/index.html index c593469a36a6..b35e2e0f7a70 100644 --- a/nl/learn/os_setup/ides/index.html +++ b/nl/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/index.html b/nl/learn/os_setup/index.html index 2754c3082b08..29a3bc85efac 100644 --- a/nl/learn/os_setup/index.html +++ b/nl/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/install_gfortran/index.html b/nl/learn/os_setup/install_gfortran/index.html index 3bbf7e17b72a..d3e31fc4db18 100644 --- a/nl/learn/os_setup/install_gfortran/index.html +++ b/nl/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/text_editors/index.html b/nl/learn/os_setup/text_editors/index.html index faa6532af473..0f0de34b24d6 100644 --- a/nl/learn/os_setup/text_editors/index.html +++ b/nl/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/os_setup/tips/index.html b/nl/learn/os_setup/tips/index.html index cf07926bd23d..e039981c7361 100644 --- a/nl/learn/os_setup/tips/index.html +++ b/nl/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/arrays_strings/index.html b/nl/learn/quickstart/arrays_strings/index.html index d51512332837..c62ecabf8751 100644 --- a/nl/learn/quickstart/arrays_strings/index.html +++ b/nl/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/derived_types/index.html b/nl/learn/quickstart/derived_types/index.html index 45b591597b9d..d0103fa0a2ab 100644 --- a/nl/learn/quickstart/derived_types/index.html +++ b/nl/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/hello_world/index.html b/nl/learn/quickstart/hello_world/index.html index c5b39d0a6296..c32da76cdd99 100644 --- a/nl/learn/quickstart/hello_world/index.html +++ b/nl/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/index.html b/nl/learn/quickstart/index.html index 6842cbdc7660..ddc37eacbfe9 100644 --- a/nl/learn/quickstart/index.html +++ b/nl/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/operators_control_flow/index.html b/nl/learn/quickstart/operators_control_flow/index.html index a4336738c20e..c56e9123a3e5 100644 --- a/nl/learn/quickstart/operators_control_flow/index.html +++ b/nl/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/organising_code/index.html b/nl/learn/quickstart/organising_code/index.html index b41b2b19a85b..0a766cc14cfb 100644 --- a/nl/learn/quickstart/organising_code/index.html +++ b/nl/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/learn/quickstart/variables/index.html b/nl/learn/quickstart/variables/index.html index be3501665ba1..23197e834bd3 100644 --- a/nl/learn/quickstart/variables/index.html +++ b/nl/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/02-28-J3-february-meeting/index.html b/nl/news/2020/02-28-J3-february-meeting/index.html index 51cee98f0d7f..8a22d5e7deb7 100644 --- a/nl/news/2020/02-28-J3-february-meeting/index.html +++ b/nl/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/04-06-Announcing-FortranCon-2020/index.html b/nl/news/2020/04-06-Announcing-FortranCon-2020/index.html index 5c24ac0e3b89..fa10f7bbecb2 100644 --- a/nl/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/nl/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/04-18-Fortran-Webinar/index.html b/nl/news/2020/04-18-Fortran-Webinar/index.html index 156c334661ac..88cc6d924d6a 100644 --- a/nl/news/2020/04-18-Fortran-Webinar/index.html +++ b/nl/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/nl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 65fcc0d1efdc..5122ba02c8b6 100644 --- a/nl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/nl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/nl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 0fa83534dff7..1b0c76556a63 100644 --- a/nl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/nl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/nl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index fcfdd19fded3..da039dbc2766 100644 --- a/nl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/nl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/nl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 74b545ba1219..ff4fd34d3abc 100644 --- a/nl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/nl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -433,14 +436,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/nl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 2b9147e942de..24b749af5554 100644 --- a/nl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/nl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,49 +415,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/nl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index 182987904a22..c2debdb1ed5f 100644 --- a/nl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/nl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -433,21 +436,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/nl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index a3c78a8996a9..eacb582cbb74 100644 --- a/nl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/nl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/nl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index 6439a1e94f83..1c4b1661acba 100644 --- a/nl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/nl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2020/index.html b/nl/news/2020/index.html index b2997beec819..14dc1862731b 100644 --- a/nl/news/2020/index.html +++ b/nl/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -600,56 +603,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -709,14 +712,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -730,21 +733,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -804,49 +807,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -906,14 +909,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -927,14 +930,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -994,21 +997,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/nl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 1bd4dfd494c5..d8b6f767a1d2 100644 --- a/nl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/nl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -433,21 +436,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/nl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index e467dfbca739..bc54c35bc161 100644 --- a/nl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/nl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/nl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 7a592fd706d3..523212a7e3e0 100644 --- a/nl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/nl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/nl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/nl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index d9109653e7ba..3bf92c9f064c 100644 --- a/nl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/nl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward diff --git a/nl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/nl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index d53e5bebf1aa..db4c1cd56582 100644 --- a/nl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/nl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík diff --git a/nl/news/2021/04-20-First-Year/index.html b/nl/news/2021/04-20-First-Year/index.html index e8d465229fc1..08ae4770a3bd 100644 --- a/nl/news/2021/04-20-First-Year/index.html +++ b/nl/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , diff --git a/nl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/nl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index b677aca96714..8da55fe2d8e4 100644 --- a/nl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/nl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík diff --git a/nl/news/2021/05-18-Welcome-GSoC-students/index.html b/nl/news/2021/05-18-Welcome-GSoC-students/index.html index cfa6aabaa777..83a3873185eb 100644 --- a/nl/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/nl/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -433,21 +436,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus diff --git a/nl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/nl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index ef251f8bdfa0..a0d2961177f2 100644 --- a/nl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/nl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/nl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/nl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 261c4fb74e52..9fa0f5a8216d 100644 --- a/nl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/nl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík diff --git a/nl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/nl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index ba2fa4a2662e..ae3587a419ba 100644 --- a/nl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/nl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/nl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index f56cf50084ad..326520a8a9b6 100644 --- a/nl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/nl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/nl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 428f0e2bef2c..c9d5246aef87 100644 --- a/nl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/nl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward diff --git a/nl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/nl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 237ff1117efc..faa45dc30dd6 100644 --- a/nl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/nl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , diff --git a/nl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/nl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 55f0e4986860..f4ae3ac1449d 100644 --- a/nl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/nl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , diff --git a/nl/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/nl/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 62ed97bb40c3..f569d4084437 100644 --- a/nl/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/nl/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -433,14 +436,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/2021/index.html b/nl/news/2021/index.html index 8c668a20c607..8e9aef1dcd79 100644 --- a/nl/news/2021/index.html +++ b/nl/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -533,14 +536,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -609,14 +612,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -683,14 +686,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -771,14 +774,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1000,28 +1003,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1088,14 +1091,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1162,14 +1165,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1183,21 +1186,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1259,35 +1262,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1347,21 +1350,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1434,35 +1437,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1522,56 +1525,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -1631,14 +1634,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1705,35 +1708,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -1793,14 +1796,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1814,21 +1817,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/nl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 79d4de0d78f4..1b2a3015348c 100644 --- a/nl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/nl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/nl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index e1a4679785ff..ffc61a17b458 100644 --- a/nl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/nl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -426,21 +429,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh diff --git a/nl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/nl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 438d2040adce..c27941285d8d 100644 --- a/nl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/nl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/nl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index c1e7e30480f1..88ffd201f2b8 100644 --- a/nl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/nl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/nl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 006627924e82..010cd1932844 100644 --- a/nl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/nl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -433,7 +436,7 @@

- Gagandeep Singh + Giannis Nikiteas diff --git a/nl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/nl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index a511fd603583..9bac11ee32e7 100644 --- a/nl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/nl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal diff --git a/nl/news/2022/index.html b/nl/news/2022/index.html index 3104483574bc..53e7e82bcdb0 100644 --- a/nl/news/2022/index.html +++ b/nl/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -600,7 +603,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -614,7 +617,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -815,7 +818,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -829,21 +832,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -903,35 +906,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/archive/index.html b/nl/news/archive/index.html index bc6a3aa5e1fb..2d5ba702920b 100644 --- a/nl/news/archive/index.html +++ b/nl/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/atom.xml b/nl/news/atom.xml index 47e40efb73c7..b2cdc00f90f5 100644 --- a/nl/news/atom.xml +++ b/nl/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:13:41.268599+00:00 + 2023-05-22T09:19:29.502608+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Milan Curcic + Henil Panchal <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Gagandeep Singh + Giannis Nikiteas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Milan Curcic + Gagandeep Singh <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -211,7 +211,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Milan Curcic + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Milan Curcic + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Milan Curcic + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Milan Curcic + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Milan Curcic + Marshall Ward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Milan Curcic + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Milan Curcic + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Milan Curcic + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Milan Curcic + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Milan Curcic + Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - Milan Curcic + and Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. diff --git a/nl/news/author/alexis-perry-holby/index.html b/nl/news/author/alexis-perry-holby/index.html index 5cdbd9529808..5f6bc1cfac93 100644 --- a/nl/news/author/alexis-perry-holby/index.html +++ b/nl/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -600,7 +603,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -614,7 +617,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -815,7 +818,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -829,21 +832,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -903,35 +906,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,14 +995,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1066,14 +1069,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1154,14 +1157,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1302,35 +1305,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1390,35 +1393,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1478,35 +1481,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/author/and-jeremie-vandenplas/index.html b/nl/news/author/and-jeremie-vandenplas/index.html index b428fdec75c3..2f509a7ecff9 100644 --- a/nl/news/author/and-jeremie-vandenplas/index.html +++ b/nl/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/author/and-laurence-kedward/index.html b/nl/news/author/and-laurence-kedward/index.html index 387e443da2be..9fc7f65d7b66 100644 --- a/nl/news/author/and-laurence-kedward/index.html +++ b/nl/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -533,21 +536,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -607,49 +610,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/arjen-markus-and-gary-klimowicz/index.html b/nl/news/author/arjen-markus-and-gary-klimowicz/index.html index 8f68b1bf7e3d..b218716525b7 100644 --- a/nl/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/nl/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -533,14 +536,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/author/arjen-markus/index.html b/nl/news/author/arjen-markus/index.html index 242b81545c51..e2dfc247e803 100644 --- a/nl/news/author/arjen-markus/index.html +++ b/nl/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -533,21 +536,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -609,56 +612,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward diff --git a/nl/news/author/brad-richardson/index.html b/nl/news/author/brad-richardson/index.html index e66e6513f3ec..656bf4e6b153 100644 --- a/nl/news/author/brad-richardson/index.html +++ b/nl/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -533,21 +536,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -609,21 +612,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -696,56 +699,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -805,56 +808,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -914,14 +917,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -935,21 +938,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -1009,49 +1012,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/damian-rouson/index.html b/nl/news/author/damian-rouson/index.html index c7c5d7999fe3..d86b2325cd91 100644 --- a/nl/news/author/damian-rouson/index.html +++ b/nl/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward diff --git a/nl/news/author/gagandeep-singh/index.html b/nl/news/author/gagandeep-singh/index.html index 7c5f7656cfc3..5a934342d8eb 100644 --- a/nl/news/author/gagandeep-singh/index.html +++ b/nl/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -533,7 +536,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -593,7 +596,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -607,21 +610,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh diff --git a/nl/news/author/gary-klimowicz/index.html b/nl/news/author/gary-klimowicz/index.html index cc68f19ed5ce..e53cc12b7713 100644 --- a/nl/news/author/gary-klimowicz/index.html +++ b/nl/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -533,21 +536,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -608,35 +611,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -696,56 +699,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -805,14 +808,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -826,21 +829,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -900,49 +903,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/giannis-nikiteas/index.html b/nl/news/author/giannis-nikiteas/index.html index 50df8abb884f..d521e284a2bf 100644 --- a/nl/news/author/giannis-nikiteas/index.html +++ b/nl/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -533,7 +536,7 @@

- Gagandeep Singh + Giannis Nikiteas diff --git a/nl/news/author/henil-panchal/index.html b/nl/news/author/henil-panchal/index.html index c085af9921de..6af372efbf83 100644 --- a/nl/news/author/henil-panchal/index.html +++ b/nl/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal diff --git a/nl/news/author/index.html b/nl/news/author/index.html index d5a5d41443d8..7dc2b3aab5cc 100644 --- a/nl/news/author/index.html +++ b/nl/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/author/ivan-pribec/index.html b/nl/news/author/ivan-pribec/index.html index 10fc0a95d70d..170697f430be 100644 --- a/nl/news/author/ivan-pribec/index.html +++ b/nl/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/jeremie-vandenplas/index.html b/nl/news/author/jeremie-vandenplas/index.html index 257e66de1011..12a061d04a87 100644 --- a/nl/news/author/jeremie-vandenplas/index.html +++ b/nl/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -526,21 +529,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -600,35 +603,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -689,14 +692,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -710,14 +713,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -786,35 +789,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -874,14 +877,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -895,21 +898,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -970,35 +973,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -1058,14 +1061,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -1079,21 +1082,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -1153,49 +1156,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -1255,14 +1258,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1276,14 +1279,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/author/laurence-kedward/index.html b/nl/news/author/laurence-kedward/index.html index 6736afe45503..893db466ccd6 100644 --- a/nl/news/author/laurence-kedward/index.html +++ b/nl/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -533,14 +536,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -616,14 +619,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -764,28 +767,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -852,14 +855,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -926,14 +929,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -947,21 +950,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1023,35 +1026,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1111,21 +1114,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1198,35 +1201,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1286,56 +1289,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -1395,14 +1398,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1469,35 +1472,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -1557,14 +1560,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1578,21 +1581,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -1653,35 +1656,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -1741,56 +1744,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -1850,14 +1853,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1871,14 +1874,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -1938,21 +1941,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/author/marshall-ward/index.html b/nl/news/author/marshall-ward/index.html index 03b13f79ee89..b93be1268738 100644 --- a/nl/news/author/marshall-ward/index.html +++ b/nl/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward diff --git a/nl/news/author/milan-curcic-and-ondrej-certik/index.html b/nl/news/author/milan-curcic-and-ondrej-certik/index.html index 517ae01a13c9..75234eb12b27 100644 --- a/nl/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/nl/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/author/milan-curcic/index.html b/nl/news/author/milan-curcic/index.html index 765cab83e4d1..09a77813de7b 100644 --- a/nl/news/author/milan-curcic/index.html +++ b/nl/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -600,7 +603,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -614,7 +617,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -815,7 +818,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -829,21 +832,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -903,35 +906,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,14 +995,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1013,14 +1016,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -1089,14 +1092,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1163,14 +1166,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1406,28 +1409,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1494,14 +1497,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1568,14 +1571,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1589,21 +1592,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1665,35 +1668,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1753,21 +1756,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1840,35 +1843,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1928,56 +1931,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -2037,14 +2040,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2111,35 +2114,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -2199,14 +2202,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2220,21 +2223,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -2295,35 +2298,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -2383,56 +2386,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -2492,14 +2495,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -2513,21 +2516,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2587,49 +2590,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2689,14 +2692,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2710,14 +2713,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -2777,21 +2780,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/author/ondrej-certik-and-zach-jibben/index.html b/nl/news/author/ondrej-certik-and-zach-jibben/index.html index 00c4b295038d..ffff05651f00 100644 --- a/nl/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/nl/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/author/ondrej-certik/index.html b/nl/news/author/ondrej-certik/index.html index 33d66975ef1d..952e53ba92f4 100644 --- a/nl/news/author/ondrej-certik/index.html +++ b/nl/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -667,35 +670,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -756,14 +759,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -777,14 +780,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -853,14 +856,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -941,14 +944,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1170,28 +1173,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1258,14 +1261,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1332,14 +1335,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1353,21 +1356,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1429,35 +1432,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1517,21 +1520,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1604,35 +1607,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1692,56 +1695,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -1801,14 +1804,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1875,14 +1878,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1896,21 +1899,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -1971,35 +1974,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -2059,56 +2062,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -2168,14 +2171,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -2189,21 +2192,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2263,49 +2266,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2365,14 +2368,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2386,14 +2389,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas diff --git a/nl/news/author/sebastian-ehlert/index.html b/nl/news/author/sebastian-ehlert/index.html index 2f987dd5faeb..06025f0da88d 100644 --- a/nl/news/author/sebastian-ehlert/index.html +++ b/nl/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -526,21 +529,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -600,35 +603,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -689,14 +692,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -710,14 +713,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -786,14 +789,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -860,14 +863,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1029,28 +1032,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1117,14 +1120,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1191,14 +1194,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1212,21 +1215,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1288,35 +1291,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1376,35 +1379,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1464,56 +1467,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -1573,35 +1576,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -1661,14 +1664,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1682,21 +1685,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -1757,56 +1760,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/thomas-konig/index.html b/nl/news/author/thomas-konig/index.html index c58ad6ddbef5..9b4bfb0c432c 100644 --- a/nl/news/author/thomas-konig/index.html +++ b/nl/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,49 +515,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz diff --git a/nl/news/author/zachary-moon/index.html b/nl/news/author/zachary-moon/index.html index 3c21510160b3..fb7afdcc5e5e 100644 --- a/nl/news/author/zachary-moon/index.html +++ b/nl/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,28 +522,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík diff --git a/nl/news/category/index.html b/nl/news/category/index.html index af680d1a769e..1c233f279e8b 100644 --- a/nl/news/category/index.html +++ b/nl/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/category/newsletter/index.html b/nl/news/category/newsletter/index.html index d38518fb6164..d684655ea17e 100644 --- a/nl/news/category/newsletter/index.html +++ b/nl/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -600,7 +603,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -614,7 +617,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -815,7 +818,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -829,21 +832,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -903,35 +906,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,14 +995,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1013,14 +1016,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -1089,14 +1092,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1163,14 +1166,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1251,14 +1254,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1480,28 +1483,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1568,14 +1571,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1642,14 +1645,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1663,21 +1666,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1739,35 +1742,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1827,21 +1830,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1914,35 +1917,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -2002,56 +2005,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -2111,14 +2114,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2185,35 +2188,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -2273,14 +2276,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2294,21 +2297,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -2369,35 +2372,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -2457,56 +2460,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -2566,14 +2569,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -2587,21 +2590,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2661,49 +2664,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2763,14 +2766,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2784,14 +2787,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/news/drafts/index.html b/nl/news/drafts/index.html index fd95180f7afd..0d3ec4e285fa 100644 --- a/nl/news/drafts/index.html +++ b/nl/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/news/index.html b/nl/news/index.html index 9cb5804a370a..637494339f11 100644 --- a/nl/news/index.html +++ b/nl/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Henil Panchal + Milan Curcic , - Milan Curcic + Henil Panchal @@ -600,7 +603,7 @@

- Giannis Nikiteas + Gagandeep Singh , @@ -614,7 +617,7 @@

- Gagandeep Singh + Giannis Nikiteas @@ -815,7 +818,7 @@

- Jérémie Vandenplas + Milan Curcic , @@ -829,21 +832,21 @@

- Gagandeep Singh + Alexis Perry-Holby , - Alexis Perry-Holby + Jérémie Vandenplas , - Milan Curcic + Gagandeep Singh @@ -903,35 +906,35 @@

- Jérémie Vandenplas + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -992,14 +995,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1013,14 +1016,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -1089,14 +1092,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1163,14 +1166,14 @@

- Alexis Perry-Holby + Sebastian Ehlert , - Sebastian Ehlert + Alexis Perry-Holby , @@ -1251,14 +1254,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1480,28 +1483,28 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , - Milan Curcic + Ondřej Čertík @@ -1568,14 +1571,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1642,14 +1645,14 @@

- Ondřej Čertík + Laurence Kedward , - Brad Richardson + Milan Curcic , @@ -1663,21 +1666,21 @@

- Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Milan Curcic + Arjen Markus @@ -1739,35 +1742,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -1827,21 +1830,21 @@

- Laurence Kedward + Brad Richardson , - Ondřej Čertík + Laurence Kedward , - Brad Richardson + Ondřej Čertík , @@ -1914,35 +1917,35 @@

- Ondřej Čertík + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Ondřej Čertík @@ -2002,56 +2005,56 @@

- Damian Rouson + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Damian Rouson , - Arjen Markus + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Marshall Ward + Arjen Markus , - Milan Curcic + Marshall Ward @@ -2111,14 +2114,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2185,35 +2188,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Laurence Kedward + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas @@ -2273,14 +2276,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2294,21 +2297,21 @@

- Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Ondřej Čertík , - Milan Curcic + Gary Klimowicz @@ -2369,35 +2372,35 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Laurence Kedward + Jérémie Vandenplas , - Milan Curcic + Gary Klimowicz @@ -2457,56 +2460,56 @@

- Jeremie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , - Gary Klimowicz + Jeremie Vandenplas , - Ivan Pribec + Brad Richardson , - Laurence Kedward + Ivan Pribec , - Milan Curcic + Gary Klimowicz @@ -2566,14 +2569,14 @@

- Jérémie Vandenplas + Milan Curcic , - and Laurence Kedward + Jérémie Vandenplas , @@ -2587,21 +2590,21 @@

- Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2661,49 +2664,49 @@

- Jérémie Vandenplas + Milan Curcic , - Thomas König + Jérémie Vandenplas , - and Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Thomas König , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Brad Richardson , - Milan Curcic + Gary Klimowicz @@ -2763,14 +2766,14 @@

- Jérémie Vandenplas + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -2784,14 +2787,14 @@

- Laurence Kedward + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas @@ -2851,21 +2854,21 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas diff --git a/nl/packages/data-types/index.html b/nl/packages/data-types/index.html index 216491b790e8..a5114b9ab73c 100644 --- a/nl/packages/data-types/index.html +++ b/nl/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/examples/index.html b/nl/packages/examples/index.html index b97ac6a8d0bc..3d58bc4a533a 100644 --- a/nl/packages/examples/index.html +++ b/nl/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/graphics/index.html b/nl/packages/graphics/index.html index 1c425997d20e..24c76bf31d13 100644 --- a/nl/packages/graphics/index.html +++ b/nl/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/index.html b/nl/packages/index.html index 9d5577c172fb..c38c6d138bb0 100644 --- a/nl/packages/index.html +++ b/nl/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/interfaces/index.html b/nl/packages/interfaces/index.html index 1a17349e7fae..60b71ba9c461 100644 --- a/nl/packages/interfaces/index.html +++ b/nl/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/io/index.html b/nl/packages/io/index.html index 914b14b4ff20..a94d59e9c2db 100644 --- a/nl/packages/io/index.html +++ b/nl/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/libraries/index.html b/nl/packages/libraries/index.html index 4f7aeafb0dbf..7234cecf1053 100644 --- a/nl/packages/libraries/index.html +++ b/nl/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/numerical/index.html b/nl/packages/numerical/index.html index 1f814cb3e3ea..47a82459c0e9 100644 --- a/nl/packages/numerical/index.html +++ b/nl/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/programming/index.html b/nl/packages/programming/index.html index f57db15ec88c..b25bbdcb6092 100644 --- a/nl/packages/programming/index.html +++ b/nl/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/scientific/index.html b/nl/packages/scientific/index.html index e5744f08b808..156db5171ad5 100644 --- a/nl/packages/scientific/index.html +++ b/nl/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/packages/strings/index.html b/nl/packages/strings/index.html index b140cd90d065..ac1c442dc2c7 100644 --- a/nl/packages/strings/index.html +++ b/nl/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/roadmap/index.html b/nl/roadmap/index.html index e0efb6b9ee39..73c2c74c5fb5 100644 --- a/nl/roadmap/index.html +++ b/nl/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/nl/search/index.html b/nl/search/index.html index c5ffdfeff47e..ebcc22ce82f5 100644 --- a/nl/search/index.html +++ b/nl/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/objects.inv b/objects.inv new file mode 100644 index 000000000000..3d9cfd5a4542 Binary files /dev/null and b/objects.inv differ diff --git a/packages/data-types/index.html b/packages/data-types/index.html new file mode 100644 index 000000000000..812348aef2ed --- /dev/null +++ b/packages/data-types/index.html @@ -0,0 +1,569 @@ + + + + + + + + + Libraries for advanced data types and container classes — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Libraries for advanced data types and container classes#

+
+

coretran

+Release +license +stars +forks +last-commit +issues +

Core fortran routines and object-oriented classes for sorting, kD-Trees, and other algorithms to handle scientific data and concepts

+

Tags: dynamic array formatting debugging errors kdtree sorting random binary search strings unit testing timing

+
+
+

datetime-fortran

+Release +license +stars +forks +last-commit +issues +

Date and time manipulation

+

Tags: day year month calendar weekday clock

+
+
+

fdict

+Release +license +stars +forks +last-commit +issues +

Variable and type-free dictionary

+

Tags: hash table

+
+
+

Fortran template library

+Release +license +stars +forks +last-commit +issues +

Generic containers, versatile algorithms, easy string manipulation, and more

+

Tags: resizeable array container linked list hash map regex string shared pointer

+
+
+

FyCollections

+

generic collection templates for Fortran

+
+
+

kdtree2

+Release +license +stars +forks +last-commit +issues +

A kd-tree implementation in fortran

+
+
+

Lookup Table Fortran

+Release +license +stars +forks +last-commit +issues +

Linear lookup table implemented in modern Fortran

+
+
+

M_time

+Release +license +stars +forks +last-commit +issues +

Procedures that expand on the Fortran DATE_AND_TIME intrinsic

+

Tags: date weekday unix epoch month convert moon phases duration

+
+
+

PENF

+Release +license +stars +forks +last-commit +issues +

Provides portable kind-parameters and many useful procedures to deal with them

+

Tags: kinds integer real ieee floating point floats precision

+
+
+

PSBLAS

+Release +license +stars +forks +last-commit +issues +

Parallel Sparse BLAS

+

Tags: linear-algebra mpi

+
+
+

qContainers

+Release +license +stars +forks +last-commit +issues +

Store any intrinsic or derived data type to a container

+

Tags: qlibc tree table hash table linked list vector dynamic array unique set

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/examples/index.html b/packages/examples/index.html new file mode 100644 index 000000000000..6be956c1eb64 --- /dev/null +++ b/packages/examples/index.html @@ -0,0 +1,520 @@ + + + + + + + + + Demonstration codes and templates for Fortran — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Demonstration codes and templates for Fortran#

+
+

Blocktran

+Release +license +stars +forks +last-commit +issues +

Object-oriented Fortran falling block game using Curses console graphics

+

Tags: game

+
+
+

Fortran 2018 examples

+Release +license +stars +forks +last-commit +issues +

Easy examples of scientific computing with modern, powerful, easy Fortran 2018 standard

+

Tags: block coarray contiguous namelist openmp random submodule iso_fortran_env

+
+
+

Fortran patterns

+Release +license +stars +forks +last-commit +issues +

Popular design patterns implemented in Fortran

+
+
+

Numerical methods in fortran

+Release +license +stars +forks +last-commit +issues +

Solving linear, nonlinear equations, ordinary differential equations

+

Tags: ode pde integral stochastic quadrature plotting

+
+
+

tcp-client-server

+Release +license +stars +forks +last-commit +issues +

A minimal Fortran TCP client and server demonstrating c interoperability

+
+
+

Tsunami

+Release +license +stars +forks +last-commit +issues +

A parallel shallow water equations solver

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/graphics/index.html b/packages/graphics/index.html new file mode 100644 index 000000000000..215086df7eb5 --- /dev/null +++ b/packages/graphics/index.html @@ -0,0 +1,565 @@ + + + + + + + + + Libraries for plotting data, handling images and generating user interfaces — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Libraries for plotting data, handling images and generating user interfaces#

+
+

easy_plplot

+Release +license +stars +forks +last-commit +issues +

Matplotlib-personality wrapper for PLplot in Fortran

+

Tags: plot

+
+
+

f03gl

+

Fortran 2003 interface to OpenGL

+

Tags: graphics interface opengl

+
+
+

fortran-motif

+Release +license +stars +forks +last-commit +issues +

Fortran 2008 interface bindings to X/Motif

+

Tags: x11 gui unix

+
+
+

fortran-sdl2

+Release +license +stars +forks +last-commit +issues +

A collection of ISO C binding interfaces to Simple DirectMedia Layer 2.0 (SDL 2.0), for multimedia and game programming in Fortran

+

Tags: graphics opengl games

+
+
+

fortran-xlib

+Release +license +stars +forks +last-commit +issues +

A collection of ISO C binding interfaces to Xlib for Fortran 2003

+

Tags: x11 xlib gui mandelbrot raycast wireframe

+
+
+

gtk-fortran

+Release +license +stars +forks +last-commit +issues +

A cross-platform library to build Graphical User Interfaces (GUI)

+

Tags: gui gtk graphical user interface

+
+
+

Illustrate

+Release +license +stars +forks +last-commit +issues +

Biomolecular Illustration Tool

+

Tags: pdb

+
+
+

M_draw

+Release +license +stars +forks +last-commit +issues +

Low-level vector graphics library

+
+
+

ogpf

+Release +license +stars +forks +last-commit +issues +

Object based interface to GnuPlot for Fortran

+

Tags: animation plot surface contour

+
+
+

PLplot

+

Library for scientific plotting

+

Tags: plot surface contour interface

+
+
+

pyplot-fortran

+Release +license +stars +forks +last-commit +issues +

For generating plots from Fortran using Python’s matplotlib.pyplot

+

Tags: pyplot matplotlib contour histogram

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/index.html b/packages/index.html index 428dcb51977f..ba02a31a0061 100644 --- a/packages/index.html +++ b/packages/index.html @@ -1,13 +1,583 @@ - - - - - + + + + + + + + Packages — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Packages#

+
+

Fortran Packages

+
+
+

A rich ecosystem of high-performance code

+
+
+

Find a Package

+
+ +
+
+
+
+
+
+

Package index

+
+
+

The fortran-lang package index is community-maintained and lists open source Fortran-related projects.This includes large-scale scientific applications,function libraries, Fortran interfaces, and developer tools.
+See here for how to get your project listed.
+Use the box above to search the package index by keyword, package name, or author username.

+
+
+
+
+ +
+
+
+

Browse Packages by Category

+
+
+

Data types and containers#

+

Libraries for advanced data types and container classes

+
+
+

Interface libraries#

+

Libraries that interface with other systems, languages, or devices

+
+
+

Libraries#

+

Fortran libraries for general programming tasks

+
+
+

Input, output and parsing#

+

Libraries for reading, writing and parsing files and inputs

+
+
+

Graphics, plotting and user interfaces#

+

Libraries for plotting data, handling images and generating user interfaces

+
+
+

Examples and templates#

+

Demonstration codes and templates for Fortran

+
+
+

Numerical projects#

+

Fortran libraries for linear algebra, optimization, root-finding etc.

+
+
+

Programming utilities#

+

Error handling, logging, documentation and testing

+
+
+

Characters and strings#

+

Libraries for manipulating characters and strings

+
+
+

Scientific Codes#

+

Applications and libraries for applied mathematical and scientific problems

+

See package index guidelines for how to get your project listed.

+
+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/interfaces/index.html b/packages/interfaces/index.html new file mode 100644 index 000000000000..203b54a18a17 --- /dev/null +++ b/packages/interfaces/index.html @@ -0,0 +1,833 @@ + + + + + + + + + Libraries that interface with other systems, languages, or devices — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Libraries that interface with other systems, languages, or devices#

+
+

aotus

+

Fortran wrapper around the C-API of the Lua scripting language

+

Tags: lua

+
+
+

arrayfire-fortran

+Release +license +stars +forks +last-commit +issues +

Fortran binding to the ArrayFire general purpose GPU library

+

Tags: cpp gpu opencl

+
+
+

clfortran

+Release +license +stars +forks +last-commit +issues +

Fortran interfaces to Khronos OpenCL 1.2 API

+

Tags: gpu compute accelerator

+
+
+

ELSI

+Release +license +forks +issues +

A software interface designed for electronic structure codes to connect with ELPA, libOMM, PEXSI, EigenExa, SLEPc, NTPoly, BSEPACK, LAPACK, MAGMA, and other solver libraries.

+

Tags: electronic-structure mpi gpu

+
+
+

f03gl

+

Fortran 2003 interface to OpenGL

+

Tags: graphics interface opengl

+
+
+

fgsl

+Release +license +stars +forks +last-commit +issues +

Fortran interface to the GNU Scientific Library

+
+
+

FKB

+Release +license +stars +forks +last-commit +issues +

Fortran Keras Bridge - A two-way deep learning bridge between Keras and Fortran

+

Tags: deep-learning data-science machine-learning neural-networks

+
+
+

flibcpp

+Release +license +stars +forks +last-commit +issues +

Fortran bindings to the C++ Standard Library

+

Tags: cpp

+
+
+

flook

+Release +license +stars +forks +last-commit +issues +

Tags: lua

+
+
+

Focal

+Release +license +stars +forks +last-commit +issues +

A module library which wraps calls to the OpenCL runtime API with a higher abstraction level

+

Tags: gpu compute accelerator

+
+
+

forpy

+Release +license +stars +forks +last-commit +issues +

allows you to use Python features in Fortran

+

Tags: dict list tuple numpy python matplotlib scipy

+
+
+

fortran-curl

+Release +license +stars +forks +last-commit +issues +

Fortran 2008 interface bindings to libcurl

+

Tags: https curl imap libcurl smtp gopher

+
+
+

fortran-lua53

+Release +license +stars +forks +last-commit +issues +

Fortran 2008 interface bindings to Lua 5.3

+

Tags: lua

+
+
+

fortran-motif

+Release +license +stars +forks +last-commit +issues +

Fortran 2008 interface bindings to X/Motif

+

Tags: x11 gui unix

+
+
+

fortran-pcre2

+Release +license +stars +forks +last-commit +issues +

Fortran 2018 interface bindings to PCRE2

+

Tags: pcre pcre2 regex

+
+
+

fortran-sdl2

+Release +license +stars +forks +last-commit +issues +

A collection of ISO C binding interfaces to Simple DirectMedia Layer 2.0 (SDL 2.0), for multimedia and game programming in Fortran

+

Tags: graphics opengl games

+
+
+

fortran-sqlite3

+Release +license +stars +forks +last-commit +issues +

Fortran 2018 interface bindings to SQLite 3

+

Tags: sql sqlite database

+
+
+

fortran-tcl86

+Release +license +stars +forks +last-commit +issues +

Fortran 2018 interface bindings to Tcl/Tk 8.6

+

Tags: tcl tk gui

+
+
+

fortran-unix

+Release +license +stars +forks +last-commit +issues +

Fortran 2008 interface bindings to selected POSIX and SysV types, functions, and routines on 64-bit Unix-like operating systems

+

Tags: unix linux freebsd os posix system

+
+
+

fortran-xlib

+Release +license +stars +forks +last-commit +issues +

A collection of ISO C binding interfaces to Xlib for Fortran 2003

+

Tags: x11 xlib gui mandelbrot raycast wireframe

+
+
+

fortran-zlib

+Release +license +stars +forks +last-commit +issues +

Fortran 2018 interface bindings to selected zlib functions

+

Tags: zlib compression deflate

+
+
+

fortranlib

+Release +license +stars +forks +last-commit +issues +

Collection of personal scientific routines in Fortran

+

Tags: solver integral integrate interpolation histogram constants hdf5 error random posix angles probability stokes vectors

+
+
+

fortyxima

+

File system manipulation and unit testing framework

+

Tags: posix libc

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

gtk-fortran

+Release +license +stars +forks +last-commit +issues +

A cross-platform library to build Graphical User Interfaces (GUI)

+

Tags: gui gtk graphical user interface

+
+
+

librsb

+

A shared memory parallel sparse matrix computations library for the Recursive Sparse Blocks format implementing the Sparse BLAS standard

+

Tags: linear-algebra openmp

+
+
+

LuaF

+

Fortran 2003/2008 bindings to Lua 5.1

+

Tags: lua

+
+
+

M_process

+Release +license +stars +forks +last-commit +issues +

Read and write lines to or from a process from Fortran via a C wrapper

+
+
+

M_system

+Release +license +stars +forks +last-commit +issues +

Call C system routines from Fortran

+

Tags: posix putenv getenv setenv environment file system mkdir rename rmdir chmod rand uname

+
+
+

mpifx

+Release +license +stars +forks +last-commit +issues +

Modern Fortran wrappers around MPI routines

+

Tags: mpi fypp

+
+
+

node-fortran

+Release +license +stars +forks +last-commit +issues +

Fortran bridge for Node.js which allows you to run Fortran code from Node.js

+
+
+

node.fortran

+Release +license +stars +forks +last-commit +issues +

Execute Node.js in your Fortran programs

+
+
+

ogpf

+Release +license +stars +forks +last-commit +issues +

Object based interface to GnuPlot for Fortran

+

Tags: animation plot surface contour

+
+
+

OpenFFT

+

Open source parallel package for computing multi-dimensional Fast Fourier Transforms (3-D and 4-D FFTs)

+

Tags: fft openmpi domain-decomposition-method

+
+
+

PLplot

+

Library for scientific plotting

+

Tags: plot surface contour interface

+
+
+

pyplot-fortran

+Release +license +stars +forks +last-commit +issues +

For generating plots from Fortran using Python’s matplotlib.pyplot

+

Tags: pyplot matplotlib contour histogram

+
+
+

scalapackfx

+Release +license +stars +forks +last-commit +issues +

Modern Fortran wrappers around ScaLAPACK routines

+

Tags: mpi fypp pblas blacs

+
+
+

sqliteff

+Release +license +forks +issues +

A thin wrapper around the SQLite library

+

Tags: sql database

+
+
+

tcp-client-server

+Release +license +stars +forks +last-commit +issues +

A minimal Fortran TCP client and server demonstrating c interoperability

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/io/index.html b/packages/io/index.html new file mode 100644 index 000000000000..2694167537ae --- /dev/null +++ b/packages/io/index.html @@ -0,0 +1,711 @@ + + + + + + + + + Libraries for reading, writing and parsing files and inputs — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Libraries for reading, writing and parsing files and inputs#

+
+

atomsk

+Release +license +stars +forks +last-commit +issues +

A Tool For Manipulating And Converting Atomic Data Files

+

Tags: file-formats

+
+
+

config_fortran

+Release +license +stars +forks +last-commit +issues +

Configuration file parser for Fortran

+
+
+

FEconv

+Release +license +stars +forks +last-commit +issues +

utility and library for converting between mesh and finite element field formats

+

Tags: ansys msh nastran bdf vtk

+
+
+

FiNeR

+Release +license +stars +forks +last-commit +issues +

INI ParseR and generator

+

Tags: config

+
+
+

FortJSON

+Release +license +forks +issues +

A JSON library designed with portability across HPC architectures in mind

+

Tags: json hpc

+
+
+

Fortran Equation Parser

+Release +license +stars +forks +last-commit +issues +

An equation parser class for interpreting and evaluating equations provided as strings.

+

Tags: equation parser

+
+
+

fortran-csv-module

+Release +license +stars +forks +last-commit +issues +

Read and write CSV Files using modern Fortran

+

Tags: csv

+
+
+

fortran-utils

+Release +license +stars +forks +last-commit +issues +

Various utilities for Fortran programs

+

Tags: constants types sorting mesh spline ppm hdf5 lapack

+
+
+

fortranlib

+Release +license +stars +forks +last-commit +issues +

Collection of personal scientific routines in Fortran

+

Tags: solver integral integrate interpolation histogram constants hdf5 error random posix angles probability stokes vectors

+
+
+

fox

+Release +license +stars +forks +last-commit +issues +

A Fortran XML library

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

h5fortran

+Release +license +stars +forks +last-commit +issues +

Simple, robust, thin HDF5 polymorphic read/write interface

+

Tags: hdf5

+
+
+

json-fortran

+Release +license +stars +forks +last-commit +issues +

A Fortran 2008 JSON API

+

Tags: json

+
+
+

jsonff

+Release +license +forks +issues +

Routines for building JSON structures in Fortran

+

Tags: json

+
+
+

M_IO

+Release +license +stars +forks +last-commit +issues +

Fortran module for common I/O tasks

+

Tags: delete slurp swallow dirname split path

+
+
+

nc4fortran

+Release +license +stars +forks +last-commit +issues +

Object-oriented interface for NetCDF4 in Fortran

+

Tags: netcdf

+
+
+

netCDF-Fortran

+Release +license +stars +forks +last-commit +issues +

Fortran interfaces for netCDF C library.

+

Tags: netcdf

+
+
+

NPY for Fortran

+Release +license +stars +forks +last-commit +issues +

Allows saving numerical Fortran arrays in Numpy’s .npy or .npz format

+

Tags: python

+
+
+

os

+Release +license +stars +forks +last-commit +issues +

Selected routines from python’s os module (meant for stdlib)

+

Tags: file C-interface directory access

+
+
+

parff

+Release +license +forks +issues +

The foundations of a functional style parser combinator library

+

Tags: parser

+
+
+

pFlogger

+Release +license +stars +forks +last-commit +issues +

A parallel Fortran logger (based on the design of the Python logger)

+

Tags: logger mpi

+
+
+

Serialbox

+Release +license +stars +forks +last-commit +issues +

A serialization library and tools for C/C++, Python3 and Fortran

+

Tags: validation

+
+
+

toml-f

+Release +license +stars +forks +last-commit +issues +

A TOML parser implementation for data serialization and deserialization in Fortran

+

Tags: toml

+
+
+

VTKFortran

+Release +license +stars +forks +last-commit +issues +

Library to parse and emit files conforming VTK (XML) standard

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/libraries/index.html b/packages/libraries/index.html new file mode 100644 index 000000000000..b03b1d423a61 --- /dev/null +++ b/packages/libraries/index.html @@ -0,0 +1,607 @@ + + + + + + + + + Fortran libraries for general programming tasks — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Fortran libraries for general programming tasks#

+
+

coretran

+Release +license +stars +forks +last-commit +issues +

Core fortran routines and object-oriented classes for sorting, kD-Trees, and other algorithms to handle scientific data and concepts

+

Tags: dynamic array formatting debugging errors kdtree sorting random binary search strings unit testing timing

+
+
+

FLAP

+Release +license +stars +forks +last-commit +issues +

Fortran command Line Arguments Parser

+

Tags: command line cli argument parser

+
+
+

Fortran Astrodynamics Toolkit

+Release +license +stars +forks +last-commit +issues +

A Modern Fortran Library for Astrodynamics

+
+
+

Fortran Standard Library (stdlib)

+Release +license +stars +forks +last-commit +issues +

A community driven and agreed upon de facto standard library for Fortran

+
+
+

fortran-utils

+Release +license +stars +forks +last-commit +issues +

Various utilities for Fortran programs

+

Tags: constants types sorting mesh spline ppm hdf5 lapack

+
+
+

fortranlib

+Release +license +stars +forks +last-commit +issues +

Collection of personal scientific routines in Fortran

+

Tags: solver integral integrate interpolation histogram constants hdf5 error random posix angles probability stokes vectors

+
+
+

functional-fortran

+Release +license +stars +forks +last-commit +issues +

Functional programming for modern Fortran

+

Tags: functional filter fold map

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

General-Purpose Fortran

+Release +license +stars +forks +last-commit +issues +

Various Fortran modules for command-line parsing, string operations, parsing, interfaces, …

+

Tags: string date time graphics command-line posix ncurses sqlite regex

+
+
+

M_CLI

+Release +license +stars +forks +last-commit +issues +

Unix-like command line argument parsing

+

Tags: namelist args

+
+
+

M_history

+Release +license +stars +forks +last-commit +issues +

Subroutine to give a line-mode command history to interactive programs

+

Tags: redo

+
+
+

Open Coarrays

+Release +license +stars +forks +last-commit +issues +

A parallel application binary interface for Fortran 2018 compilers

+

Tags: mpi openshmem gfortran

+
+
+

The NJOY Nuclear Data Processing System

+Release +license +stars +forks +last-commit +issues +

Package for producing pointwise and multigroup nuclear cross sections and related quantities from evaluated nuclear data in the ENDF format

+
+
+

yaFyaml

+Release +license +stars +forks +last-commit +issues +

Yet another Fortran YAML library

+

Tags: configuration yaml

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/numerical/index.html b/packages/numerical/index.html new file mode 100644 index 000000000000..5a208d3d7f72 --- /dev/null +++ b/packages/numerical/index.html @@ -0,0 +1,991 @@ + + + + + + + + + Fortran libraries for linear algebra, optimization, root-finding etc. — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Fortran libraries for linear algebra, optimization, root-finding etc.#

+
+

2DECOMP&FFT

+

Library for 2D pencil decomposition and distributed Fast Fourier Transform

+

Tags: fft parallel distributed-memory openmpi

+
+
+

ARPACK

+Release +license +stars +forks +last-commit +issues +

Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.

+

Tags: eigenvalue eigenvector singular value decomposition svd

+
+
+

bspline-fortran

+Release +license +stars +forks +last-commit +issues +

Multidimensional B-Spline interpolation of data on a regular grid

+

Tags: spline interpolation extrapolation integration integral

+
+
+

DBCSR

+Release +license +stars +forks +last-commit +issues +

Distributed block compresseed sparse row matrix library

+

Tags: linear-algebra parallel mpi openmp cuda hip

+
+
+

ddeabm

+Release +license +stars +forks +last-commit +issues +

Modern Fortran implementation of the DDEABM Adams-Bashforth algorithm

+

Tags: ode adams-bashforth

+
+
+

ddPCM

+Release +license +stars +forks +last-commit +issues +

A fast domain decomposition based implementation of the COSMO solvation model

+

Tags: continuum-solvation cosmo pcm cpcm

+
+
+

DelaunaySparse

+Release +license +stars +forks +last-commit +issues +

Multivariate Interpolation via a Sparse Subset of the Delaunay Triangulation in Medium to High Dimensions.

+

Tags: interpolation openmp acm-toms

+
+
+

dop853

+Release +license +stars +forks +last-commit +issues +

Modern Fortran Edition of Hairer’s DOP853 ODE Solver

+

Tags: ode runge kutta

+
+
+

ElmerFEM

+Release +license +stars +forks +last-commit +issues +

Finite element software for numerical solution of partial differential equations

+

Tags: pde fe

+
+
+

ELPA

+

Eigenvalue Solvers for Petaflop Applications

+

Tags: mpi gpu

+
+
+

FATODE

+Release +license +stars +forks +last-commit +issues +

A Fortran library for the integration of ordinary differential equations with direct and adjoint sensitivity analysis capabilities

+

Tags: ode-solver

+
+
+

fgsl

+Release +license +stars +forks +last-commit +issues +

Fortran interface to the GNU Scientific Library

+
+
+

FLINT

+Release +license +stars +forks +last-commit +issues +

Fortran Library for numerical INTegration of differential equations

+

Tags: ode runge kutta

+
+
+

fmm2d

+Release +license +stars +forks +last-commit +issues +

Compute N-body interactions governed by the Laplace and Helmholtz equations, to a specified precision, in two dimensions, on a multi-core shared-memory machine.

+

Tags: fast-multipole-method

+
+
+

FMM3D

+Release +license +stars +forks +last-commit +issues +

Compute N-body interactions governed by the Laplace and Helmholtz equations, to a specified precision, in three dimensions, on a multi-core shared-memory machine.

+

Tags: fast-multipole-method

+
+
+

FOODIE

+Release +license +stars +forks +last-commit +issues +

Fortran Object-Oriented Differential-equations Integration Environment

+

Tags: ode pde euler runge kutta

+
+
+

fortranlib

+Release +license +stars +forks +last-commit +issues +

Collection of personal scientific routines in Fortran

+

Tags: solver integral integrate interpolation histogram constants hdf5 error random posix angles probability stokes vectors

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

GALAHAD

+Release +license +stars +forks +last-commit +issues +

Modules for nonlinear optimization

+

Tags: least squares active set quadratic-programming interior point convex-programming linear-programming

+
+
+

HANDE

+Release +license +stars +forks +last-commit +issues +

Open source stochastic quantum chemistry

+

Tags: qmc electronic-structure

+
+
+

Incompact3d

+Release +license +stars +forks +last-commit +issues +

Solver for the incompressible Navier-Stokes equations

+
+
+

LAPACK

+Release +license +stars +forks +last-commit +issues +

Routines for numerical linear algebra

+

Tags: blas linear-algebra

+
+
+

libnegf

+Release +license +stars +forks +last-commit +issues +

A general library for Non Equilibrium Green’s Functions

+

Tags: transport electronic-structure

+
+
+

librsb

+

A shared memory parallel sparse matrix computations library for the Recursive Sparse Blocks format implementing the Sparse BLAS standard

+

Tags: linear-algebra openmp

+
+
+

Los Alamos Grid Toolbox (LaGriT)

+Release +license +stars +forks +last-commit +issues +

a library of user callable tools that provide mesh generation, mesh optimization and dynamic mesh maintenance

+
+
+

MapTran3D

+Release +license +stars +forks +last-commit +issues +

Geodesy, 3D coordinate conversions for ECEF, ENU, ECI, …

+
+
+

neural-fortran

+Release +license +stars +forks +last-commit +issues +

A parallel neural net microframework.

+

Tags: back propagation coarray

+
+
+

nlesolver-fortran

+Release +license +stars +forks +last-commit +issues +

Nonlinear equation solver with modern Fortran

+
+
+

NTPoly

+Release +license +stars +forks +last-commit +issues +

A massively parallel library for computing the functions of sparse matrices.

+

Tags: mpi

+
+
+

NUFFT

+

Non-Uniform Fast Fourier Transforms

+

Tags: non-uniform-fft fft

+
+
+

NumDiff

+Release +license +stars +forks +last-commit +issues +

a modern Fortran interface for computing the Jacobian (derivative) matrix of m nonlinear functions which depend on n variables

+

Tags: finite difference

+
+
+

Numerical methods in fortran

+Release +license +stars +forks +last-commit +issues +

Solving linear, nonlinear equations, ordinary differential equations

+

Tags: ode pde integral stochastic quadrature plotting

+
+
+

ODEPACK

+

A Systematized Collection of ODE Solvers (FORTRAN 77)

+

Tags: ode runge kutta adams-bashforth

+
+
+

OpenBLAS

+Release +license +stars +forks +last-commit +issues +

Optimized BLAS library based on GotoBLAS2

+

Tags: blas linear-algebra

+
+
+

OpenFFT

+

Open source parallel package for computing multi-dimensional Fast Fourier Transforms (3-D and 4-D FFTs)

+

Tags: fft openmpi domain-decomposition-method

+
+
+

ParaMonte

+Release +license +stars +forks +last-commit +issues +

A general-purpose high-performance MPI/Coarray-parallel Monte Carlo simulation library implemented in Fortran 2018 with interfaces to C/C++/Fortran/MATLAB/Python

+

Tags: parallel mpi coarray monte carlo mcmc c cpp matlab python statistics bayesian stochastic optimization sampling integration machine learning

+
+
+

PCHIP

+Release +license +stars +forks +last-commit +issues +

Piecewise Cubic Hermite Interpolation Package

+

Tags: hermite spline interpolation integration integral

+
+
+

PENF

+Release +license +stars +forks +last-commit +issues +

Provides portable kind-parameters and many useful procedures to deal with them

+

Tags: kinds integer real ieee floating point floats precision

+
+
+

PoisFFT

+Release +license +stars +forks +last-commit +issues +

Library to solve Poisson equation on a uniform Cartesian grid using the Fast Fourier Transform

+

Tags: fft poisson

+
+
+

PROPACK

+

Software package for computing the singular value decomposition of large and sparse or structured matrices

+

Tags: linear-algebra svd lanczos-bidiagonalization openmp

+
+
+

PSBLAS

+Release +license +stars +forks +last-commit +issues +

Parallel Sparse BLAS

+

Tags: linear-algebra mpi

+
+
+

QMD-PROGRESS

+Release +license +stars +forks +last-commit +issues +

Parallel, Rapid O(N) and Graph-based Recursive Electronic Structure Solver.

+

Tags: mpi

+
+
+

QNSTOP

+Release +license +stars +forks +last-commit +issues +

Quasi-Newton Algorithm for Stochastic Optimization.

+

Tags: quasi-newton-optimization stochastic-optimization acm-toms

+
+
+

quadpack

+Release +license +stars +forks +last-commit +issues +

Fortran library for the numerical computation of definite one-dimensional integrals

+

Tags: quadpack quadpack2 integrals

+
+
+

quaff

+Release +license +forks +issues +

Quantities for Fortran. Make math with units more convenient

+
+
+

regridpack

+Release +license +stars +forks +last-commit +issues +

Suite of Fortran routines for interpolating values between one-, two-, three-, and four-dimensional arrays defined on uniform or nonuniform orthogonal grids

+

Tags: linear cubic interpolation

+
+
+

rng_fortran

+Release +license +stars +forks +last-commit +issues +

Pseudo random number generator in Fortran, internally using xoroshiro128+

+

Tags: uniform normal poisson distributed

+
+
+

RPNcalc

+Release +license +stars +forks +last-commit +issues +

Reverse Polish Notation calculator for interactive console use

+
+
+

SciFortran

+Release +license +stars +forks +last-commit +issues +

collection of fortran modules and procedures for scientific calculations.

+
+
+

SHTOOLS

+Release +license +stars +forks +last-commit +issues +

A Fortran-95/Python library that can be used to perform spherical harmonic transforms

+

Tags: spectral analysis Slepian bases gravitational magnetic field openmp

+
+
+

SLICOT

+Release +license +stars +forks +last-commit +issues +

A Fortran subroutines library for systems and control

+
+
+

slsqp

+Release +license +stars +forks +last-commit +issues +

SLSQP nonlinear constrained optimizer

+

Tags: nonlinear-programming equality inequality constraints

+
+
+

Tapenade

+

A tool for automatic differentiation (forward/reverse) of Fortran and c programs

+

Tags: algorithmic derivative ad

+
+
+

VTMOP

+Release +license +stars +forks +last-commit +issues +

Solver for Blackbox Multiobjective Optimization Problems.

+

Tags: global-optimization simulation-optimization blackbox-optimization multiobjective-optimization multicriteria-optimization response-surface-methodology acm-toms

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/programming/index.html b/packages/programming/index.html new file mode 100644 index 000000000000..406bc532ecab --- /dev/null +++ b/packages/programming/index.html @@ -0,0 +1,691 @@ + + + + + + + + + Error handling, logging, documentation and testing — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Error handling, logging, documentation and testing#

+
+

camfort

+Release +license +stars +forks +last-commit +issues +

Light-weight verification and transformation tools for Fortran

+

Tags: refactoring

+
+
+

convert_FORTRAN_case

+Release +license +stars +forks +last-commit +issues +

Case conversion of files written in fixed form Fortran

+

Tags: formatter converter

+
+
+

coretran

+Release +license +stars +forks +last-commit +issues +

Core fortran routines and object-oriented classes for sorting, kD-Trees, and other algorithms to handle scientific data and concepts

+

Tags: dynamic array formatting debugging errors kdtree sorting random binary search strings unit testing timing

+
+
+

erloff

+Release +license +forks +issues +

Errors and logging for fortran

+

Tags: errors logging

+
+
+

f90wrap

+Release +license +stars +forks +last-commit +issues +

F90 to Python interface generator with derived type support

+

Tags: interface-generator python

+
+
+

findent

+

Indents/beautifies/converts Fortran sources

+

Tags: formatter converter

+
+
+

FORD

+Release +license +stars +forks +last-commit +issues +

Automatic documentation generator for modern Fortran programs

+

Tags: documentation

+
+
+

fortran-error-handler

+Release +license +stars +forks +last-commit +issues +

Comprehensive error handling framework for Modern Fortran

+

Tags: errors logging fpm

+
+
+

FortranCallGraph

+Release +license +stars +forks +last-commit +issues +

Static source code analysis tool for Fortran

+
+
+

fortyxima

+

File system manipulation and unit testing framework

+

Tags: posix libc

+
+
+

fparser

+Release +license +stars +forks +last-commit +issues +

Fortran parser written purely in Python which supports Fortran 2003 and some Fortran 2008

+

Tags: parser

+
+
+

fpm

+Release +license +stars +forks +last-commit +issues +

Fortran Package Manager

+

Tags: build-system package-manager

+
+
+

fprettify

+Release +license +stars +forks +last-commit +issues +

auto-formatter for modern fortran source code

+

Tags: formatter

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

fypp

+Release +license +stars +forks +last-commit +issues +

Python powered Fortran preprocessor

+

Tags: metaprogramming

+
+
+

fytest

+

a lightweight unit testing framework for Fortran

+

Tags: unit testing

+
+
+

gFTL

+Release +license +stars +forks +last-commit +issues +

Templates for STL-like Fortran implementations of containers for arbitrary types (Vector, Set, Map, Deque, Stack, Queue, …)

+

Tags: container template

+
+
+

gFTL-shared

+Release +license +stars +forks +last-commit +issues +

Instantiations of gFTL templates of common containers for intrinsic types

+

Tags: container template

+
+
+

hipfort

+Release +license +stars +forks +last-commit +issues +

Fortran interfaces for ROCm libraries

+

Tags: hip rocm

+
+
+

pFUnit

+Release +license +stars +forks +last-commit +issues +

Parallel Fortran Unit Testing Framework

+

Tags: unit testing

+
+
+

shroud

+Release +license +stars +forks +last-commit +issues +

generate Fortran and Python wrappers for C and C++ libraries

+

Tags: interface-generator c++

+
+
+

SWIG-Fortran

+Release +license +stars +forks +last-commit +issues +

SWIG for C++ to Fortran interface generation

+

Tags: interface-generator c++

+
+
+

Tapenade

+

A tool for automatic differentiation (forward/reverse) of Fortran and c programs

+

Tags: algorithmic derivative ad

+
+
+

vegetables

+Release +license +forks +issues +

A Fortran testing framework written using functional programming principles.

+

Tags: testing assert

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/scientific/index.html b/packages/scientific/index.html new file mode 100644 index 000000000000..d81654cf3ce6 --- /dev/null +++ b/packages/scientific/index.html @@ -0,0 +1,1155 @@ + + + + + + + + + Applications and libraries for applied mathematical and scientific problems — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Applications and libraries for applied mathematical and scientific problems#

+
+

2DECOMP&FFT

+

Library for 2D pencil decomposition and distributed Fast Fourier Transform

+

Tags: fft parallel distributed-memory openmpi

+
+
+

ABINIT

+Release +license +stars +forks +last-commit +issues +

ABINIT is a software suite to calculate the optical, mechanical, vibrational, and other observable properties of materials

+

Tags: electronic-structure quantum-chemistry physics molecular-dynamics mpi

+
+
+

ADflow

+Release +license +stars +forks +last-commit +issues +

A finite volume RANS solver tailored for gradient-based aerodynamic design optimization

+

Tags: simulation computational-fluid-dynamics automatic-differentiation adjoint structured multiblock overset python hpc cfd mpi

+
+
+

aenet

+Release +license +stars +forks +last-commit +issues +

Atomic interaction potentials based on artificial neural networks

+
+
+

astro-fortran

+Release +license +stars +forks +last-commit +issues +

Modern Fortran implementations of standard models used in fundamental astronomy

+

Tags: astronomy

+
+
+

BandUP

+Release +license +stars +forks +last-commit +issues +

Band Unfolding code for Plane-wave based calculations

+
+
+

BigDFT

+Release +license +forks +issues +

fast, precise, and flexible DFT code for ab-initio atomistic simulation

+

Tags: electronic-structure wavelets density-functional-theory

+
+
+

CaNS

+Release +license +stars +forks +last-commit +issues +

A code for fast, massively-parallel direct numerical simulations (DNS) of canonical flows

+

Tags: fluid-dynamics fluid-simulation computational-fluid-dynamics turbulence high-performance-computing hpc cfd

+
+
+

Cantera

+Release +license +stars +forks +last-commit +issues +

Chemical kinetics, thermodynamics, and transport tool suite

+
+
+

Castro

+Release +license +stars +forks +last-commit +issues +

An adaptive mesh, astrophysical radiation hydrodynamics simulation code

+

Tags: adaptive mesh astrophysics radiation hydrodynamics

+
+
+

CFL3D

+Release +license +stars +forks +last-commit +issues +

Structured-grid, cell-centered, upwind-biased, Reynolds-averaged Navier-Stokes (RANS) code

+
+
+

CompDam_DGD

+Release +license +stars +forks +last-commit +issues +

continuum damage mechanics (CDM) material model intended for use with the Abaqus finite element code

+
+
+

cp2k

+Release +license +stars +forks +last-commit +issues +

quantum chemistry and solid state physics software package that can perform atomistic simulations

+

Tags: quantum-chemistry physics molecular-dynamics metadynamics mpi cuda

+
+
+

crest

+Release +license +stars +forks +last-commit +issues +

Conformer-rotamer ensemble search tool

+

Tags: computational-chemistry atomistic-simulations conformational-analysis metadynamics

+
+
+

CTSM

+Release +license +stars +forks +last-commit +issues +

The Community Terrestrial Systems Model

+
+
+

Dalton

+Release +license +forks +issues +

Powerful molecular electronic structure program

+

Tags: electronic-structure relativistic

+
+
+

DAMASK

+Release +license +stars +forks +last-commit +issues +

A unified multi-physics crystal plasticity simulation package

+

Tags: plasticity simulation material multi-physics

+
+
+

DFT-D4

+Release +license +stars +forks +last-commit +issues +

A Generally Applicable Atomic-Charge Dependent London Dispersion Correction

+

Tags: dft-d dispersion-correction

+
+
+

dftatom

+Release +license +stars +forks +last-commit +issues +

Routines for Radial Integration of Dirac, Schrödinger, and Poisson Equations

+

Tags: electronic-structure atomic

+
+
+

DFTB+

+Release +license +stars +forks +last-commit +issues +

DFTB+ general package for performing fast atomistic simulations

+

Tags: tight-binding quantum-mechanics density-functional-theory

+
+
+

DL_POLY_4

+Release +license +forks +issues +

classical molecular dynamics code developed at Daresbury Laboratory since 1992

+

Tags: molecular-dynamics mpi

+
+
+

Elk

+

An all-electron full-potential linearised augmented-plane wave (LAPW) code with many advanced features

+

Tags: density-functional-theory

+
+
+

eT

+Release +license +forks +issues +

electronic structure program with coupled cluster, multiscale and multilevel methods

+

Tags: electronic-structure coupled-cluster

+
+
+

FATODE

+Release +license +stars +forks +last-commit +issues +

A Fortran library for the integration of ordinary differential equations with direct and adjoint sensitivity analysis capabilities

+

Tags: ode-solver

+
+
+

fds

+Release +license +stars +forks +last-commit +issues +

Large-eddy simulation code for low-speed flows, with an emphasis on smoke and heat transport from fires.

+
+
+

flexi

+Release +license +stars +forks +last-commit +issues +

Open Source High-Order Unstructured Discontinuous Galerkin Fluid Dynamics Solver

+
+
+

fluidity

+Release +license +stars +forks +last-commit +issues +

Computational fluid dynamics code with adaptive unstructured mesh capabilities

+

Tags: cfd computational-fluid-dynamics unstructured

+
+
+

FMS

+Release +license +stars +forks +last-commit +issues +

Flexible Modeling System

+
+
+

Fortnet

+Release +license +stars +forks +last-commit +issues +

A software package for training Behler-Parrinello neural networks

+

Tags: machine-learning neural-networks bpnn atomistic-simulations

+
+
+

freeCappuccino

+Release +license +stars +forks +last-commit +issues +

A three-dimensional unstructured finite volume code for fluid flow simulations.

+

Tags: finite volume turbulent turbulence

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

Gemini3D

+Release +license +stars +forks +last-commit +issues +

3D ionospheric model covering local (> 10 gyroradii) to global scales.

+
+
+

HANDE

+Release +license +stars +forks +last-commit +issues +

Open source stochastic quantum chemistry

+

Tags: qmc electronic-structure

+
+
+

ICAR

+Release +license +stars +forks +last-commit +issues +

The Intermediate Complexity Atmospheric Research model

+
+
+

LATTE

+Release +license +stars +forks +last-commit +issues +

Open source density functional tight binding molecular dynamics

+

Tags: tight-binding molecular-dynamics

+
+
+

lesgo

+Release +license +stars +forks +last-commit +issues +
+
+

libmbd

+Release +license +stars +forks +last-commit +issues +

Many-body dispersion library

+

Tags: dispersion-correction

+
+
+

librsb

+

A shared memory parallel sparse matrix computations library for the Recursive Sparse Blocks format implementing the Sparse BLAS standard

+

Tags: linear-algebra openmp

+
+
+

LSDalton

+Release +license +forks +issues +

Linear scaling molecular electronic structure program

+

Tags: electronic-structure relativistic

+
+
+

MESA

+

Modules for Experiments in Stellar Astrophysics

+

Tags: stellar astrophysics

+
+
+

MITgcm

+Release +license +stars +forks +last-commit +issues +

M.I.T General Circulation Model master code and documentation repository

+
+
+

MOM6

+Release +license +stars +forks +last-commit +issues +

Modular Ocean Model

+
+
+

MPAS-Model

+Release +license +stars +forks +last-commit +issues +

collaborative project for developing atmosphere, ocean, and other earth-system simulation components for use in climate, regional climate, and weather studies

+
+
+

NASTRAN 93

+Release +license +stars +forks +last-commit +issues +

NASTRAN is the NASA Structural Analysis System, a finite element analysis program (FEA)

+

Tags: finite element structural

+
+
+

NASTRAN 95

+Release +license +stars +forks +last-commit +issues +

NASA Structural Analysis System, a finite element analysis program (FEA) completed in the early 1970’s

+

Tags: finite element structural eigne stability loads

+
+
+

Nek5000

+Release +license +stars +forks +last-commit +issues +

MPI parallel higher-order spectral element CFD solver

+

Tags: cfd computational-fluid-dynamics spectral element higher order mpi parallel les rans

+
+
+

NWChem

+Release +license +stars +forks +last-commit +issues +

Open Source High-Performance Computational Chemistry

+

Tags: computational-chemistry parallel-computing electronic-structure molecular-simulations density-functional-theory hartree-fock quantum-chemistry

+
+
+

Octopus

+Release +license +forks +issues +

Real-space Time-Dependent Density Functional Theory code

+

Tags: electronic-structure

+
+
+

OFF

+Release +license +stars +forks +last-commit +issues +

Finite volume fluid dynamics

+

Tags: godunov riemann euler runge kutta structured

+
+
+

OpenMolcas

+Release +license +forks +issues +

Quantum chemistry software package for multiconfigurational approaches to the electronic structure

+

Tags: electronic-structure casscf caspt2

+
+
+

OpenSWPC

+Release +license +stars +forks +last-commit +issues +

A Seismic Wave Propagation Code by Parallel Finite Difference Method

+
+
+

pencil-code

+Release +license +stars +forks +last-commit +issues +

A high-order finite-difference code for compressible hydrodynamic flows with magnetic fields and particles

+

Tags: finite-difference hydrodynamics magnetic-field particles

+
+
+

qcxms

+Release +license +stars +forks +last-commit +issues +

Quantum mechanic mass spectrometry calculation program

+

Tags: computational-chemistry molecular-dynamics mass-spectrometry

+
+
+

Quantum ESPRESSO

+Release +license +stars +forks +last-commit +issues +

Quantum ESPRESSO is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale

+

Tags: electronic-structure quantum-chemistry physics molecular-dynamics mpi

+
+
+

QUICK

+Release +license +stars +forks +last-commit +issues +

A GPU-enabled ab initio quantum chemistry software package

+

Tags: computational-chemistry parallel-computing electronic-structure molecular-simulations density-functional-theory hartree-fock quantum-chemistry

+
+
+

QUIP

+Release +license +stars +forks +last-commit +issues +

The QUIP package is a collection of software tools to carry out molecular dynamics simulations.

+

Tags: electronic-structure quantum-chemistry physics molecular-dynamics mpi qm-mm

+
+
+

roots-fortran

+Release +license +stars +forks +last-commit +issues +

Modern Fortran library for finding the roots of continuous scalar functions of a single real variable

+
+
+

SeisSol

+Release +license +stars +forks +last-commit +issues +

A software for the numerical simulation of seismic wave phenomena and earthquake dynamics

+

Tags: hpc earthquakes dynamic-rupture

+
+
+

siesta

+Release +license +forks +issues +

A first-principles materials simulation code using DFT

+

Tags: electronic-structure density-functional-theory molecular-dynamics mpi

+
+
+

SLICOT

+Release +license +stars +forks +last-commit +issues +

A Fortran subroutines library for systems and control

+
+
+

SNaC

+Release +license +stars +forks +last-commit +issues +

A multi-block solver for massively parallel direct numerical simulations (DNS) of fluid flows

+

Tags: fluid-dynamics fluid-simulation computational-fluid-dynamics turbulence high-performance-computing hpc cfd

+
+
+

SNAP

+Release +license +stars +forks +last-commit +issues +

proxy application to model the performance of a modern discrete ordinates neutral particle transport application

+
+
+

Specfem3D

+Release +license +stars +forks +last-commit +issues +

Simulates acoustic (fluid), elastic (solid), coupled acoustic/elastic, poroelastic or seismic wave propagation in any type of conforming mesh of hexahedra (structured or not)

+
+
+

tinker

+Release +license +stars +forks +last-commit +issues +

Software Tools for Molecular Design

+

Tags: molecular-modeling

+
+
+

Tracmass

+Release +license +stars +forks +last-commit +issues +

Lagrangian particle tracking code

+
+
+

Truchas

+Release +license +forks +issues +

3D Multiphysics Simulation of Metal Casting and Processing

+

Tags: fluid-dynamics metal-casting multiphysics hpc

+
+
+

Wannier90

+Release +license +stars +forks +last-commit +issues +

The Maximally-Localised Generalised Wannier Functions Code

+

Tags: electronic-structure

+
+
+

WHIZARD

+

Particle Physics Monte Carlo Event Generator

+

Tags: particle physics parallel mpi monte carlo optimization sampling integration

+
+
+

WRF

+Release +license +stars +forks +last-commit +issues +

Weather Research and Forecasting model

+
+
+

xtb

+Release +license +stars +forks +last-commit +issues +

Semiempirical Extended Tight-Binding Program Package

+

Tags: quantum-chemistry computational-chemistry atomistic-simulations

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/packages/strings/index.html b/packages/strings/index.html new file mode 100644 index 000000000000..dd88419a9d16 --- /dev/null +++ b/packages/strings/index.html @@ -0,0 +1,539 @@ + + + + + + + + + Libraries for manipulating characters and strings — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Featured Open Source Projects

+
+
+

A rich ecosystem of high-performance code

+
+
+

Libraries for manipulating characters and strings#

+
+

coretran

+Release +license +stars +forks +last-commit +issues +

Core fortran routines and object-oriented classes for sorting, kD-Trees, and other algorithms to handle scientific data and concepts

+

Tags: dynamic array formatting debugging errors kdtree sorting random binary search strings unit testing timing

+
+
+

Fortran Equation Parser

+Release +license +stars +forks +last-commit +issues +

An equation parser class for interpreting and evaluating equations provided as strings.

+

Tags: equation parser

+
+
+

fortran-pcre2

+Release +license +stars +forks +last-commit +issues +

Fortran 2018 interface bindings to PCRE2

+

Tags: pcre pcre2 regex

+
+
+

Futility

+Release +license +stars +forks +last-commit +issues +

Fortran utilities including unit test harness, arbitrary length strings, parameter list objects, timers, geometry definitions, file wrappers, linear algebra tools, and parallel computing support

+
+
+

iso_varying_string

+Release +license +forks +issues +

Implementation of the Fortran ISO_VARYING_STRING module in accordance with the standard

+

Tags: varying length character strings

+
+
+

M_strings

+Release +license +stars +forks +last-commit +issues +

Fortran string manipulations

+

Tags: upper lower quoted join replace white space string conversion tokens split

+
+
+

strff

+Release +license +forks +issues +

Strings for Fortran - A library of string functions for Fortran.

+
+
+

StringiFor

+Release +license +stars +forks +last-commit +issues +

Fortran strings manipulator

+

Tags: split join basename search concat

+
+

See package index guidelines for how to get your project listed.

+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/pl/.doctrees/community.doctree b/pl/.doctrees/community.doctree index 5248b0e2d657..6875ba3b6056 100644 Binary files a/pl/.doctrees/community.doctree and b/pl/.doctrees/community.doctree differ diff --git a/pl/.doctrees/environment.pickle b/pl/.doctrees/environment.pickle index 159c7081c1e5..a386125dc1a8 100644 Binary files a/pl/.doctrees/environment.pickle and b/pl/.doctrees/environment.pickle differ diff --git a/pl/.doctrees/index.doctree b/pl/.doctrees/index.doctree index 3fc3d0094d8e..d50b0816ad71 100644 Binary files a/pl/.doctrees/index.doctree and b/pl/.doctrees/index.doctree differ diff --git a/pl/community/contributing/index.html b/pl/community/contributing/index.html index 94231cba47a6..b72fdcd30a36 100644 --- a/pl/community/contributing/index.html +++ b/pl/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/community/history/index.html b/pl/community/history/index.html index 8b787498d7b5..69543e5b17d8 100644 --- a/pl/community/history/index.html +++ b/pl/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/community/index.html b/pl/community/index.html index af1083ef5a63..02f07c12063a 100644 --- a/pl/community/index.html +++ b/pl/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/community/minibooks/index.html b/pl/community/minibooks/index.html index 3b10fe7c3bb9..27b931ce7db2 100644 --- a/pl/community/minibooks/index.html +++ b/pl/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/community/packages/index.html b/pl/community/packages/index.html index a56adc8d07fb..6d2701357e02 100644 --- a/pl/community/packages/index.html +++ b/pl/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/compilers/index.html b/pl/compilers/index.html index d5eee076f6cd..c6e151da671a 100644 --- a/pl/compilers/index.html +++ b/pl/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/genindex/index.html b/pl/genindex/index.html index a6bab874b9ba..b0618cee26c1 100644 --- a/pl/genindex/index.html +++ b/pl/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/index.html b/pl/index.html index 2e0d80f5f29c..79b6bdc5c0eb 100644 --- a/pl/index.html +++ b/pl/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/allocatable_arrays/index.html b/pl/learn/best_practices/allocatable_arrays/index.html index 0f2d83317360..e650b3639a15 100644 --- a/pl/learn/best_practices/allocatable_arrays/index.html +++ b/pl/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/arrays/index.html b/pl/learn/best_practices/arrays/index.html index 6fae5dc73cb1..461020d2553e 100644 --- a/pl/learn/best_practices/arrays/index.html +++ b/pl/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/callbacks/index.html b/pl/learn/best_practices/callbacks/index.html index e0aecb1e345d..6f325754964f 100644 --- a/pl/learn/best_practices/callbacks/index.html +++ b/pl/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/element_operations/index.html b/pl/learn/best_practices/element_operations/index.html index 021fd8bdde70..082ba8c9a0e9 100644 --- a/pl/learn/best_practices/element_operations/index.html +++ b/pl/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/file_io/index.html b/pl/learn/best_practices/file_io/index.html index 0a8c3f795b3b..f98f1607cc7e 100644 --- a/pl/learn/best_practices/file_io/index.html +++ b/pl/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/floating_point/index.html b/pl/learn/best_practices/floating_point/index.html index fa463257b5f3..2475898f3010 100644 --- a/pl/learn/best_practices/floating_point/index.html +++ b/pl/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/index.html b/pl/learn/best_practices/index.html index 3441149719c8..28fe1db16722 100644 --- a/pl/learn/best_practices/index.html +++ b/pl/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/integer_division/index.html b/pl/learn/best_practices/integer_division/index.html index 7ce1946c4e9c..87f5722cd615 100644 --- a/pl/learn/best_practices/integer_division/index.html +++ b/pl/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/modules_programs/index.html b/pl/learn/best_practices/modules_programs/index.html index 2eb9f4db43b4..f5d140ce3536 100644 --- a/pl/learn/best_practices/modules_programs/index.html +++ b/pl/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/multidim_arrays/index.html b/pl/learn/best_practices/multidim_arrays/index.html index 81f65ec80a73..21552b9c5eca 100644 --- a/pl/learn/best_practices/multidim_arrays/index.html +++ b/pl/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/style_guide/index.html b/pl/learn/best_practices/style_guide/index.html index a7b9fc1cdd4e..187fc6b76249 100644 --- a/pl/learn/best_practices/style_guide/index.html +++ b/pl/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/best_practices/type_casting/index.html b/pl/learn/best_practices/type_casting/index.html index 02503a5a822d..ca1944fc89b4 100644 --- a/pl/learn/best_practices/type_casting/index.html +++ b/pl/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/build_tools/index.html b/pl/learn/building_programs/build_tools/index.html index 03dc99a98d25..539089b333da 100644 --- a/pl/learn/building_programs/build_tools/index.html +++ b/pl/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/compiling_source/index.html b/pl/learn/building_programs/compiling_source/index.html index f1f2fb13c93c..048d0e4dc243 100644 --- a/pl/learn/building_programs/compiling_source/index.html +++ b/pl/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/distributing/index.html b/pl/learn/building_programs/distributing/index.html index 8da11ed94786..3df197b0d144 100644 --- a/pl/learn/building_programs/distributing/index.html +++ b/pl/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/include_files/index.html b/pl/learn/building_programs/include_files/index.html index c75497afb0d9..958daacd7f05 100644 --- a/pl/learn/building_programs/include_files/index.html +++ b/pl/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/index.html b/pl/learn/building_programs/index.html index b18bc34232f5..181dde9a913d 100644 --- a/pl/learn/building_programs/index.html +++ b/pl/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/linking_pieces/index.html b/pl/learn/building_programs/linking_pieces/index.html index a5c78d76d714..4d01a1a6d73d 100644 --- a/pl/learn/building_programs/linking_pieces/index.html +++ b/pl/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/managing_libraries/index.html b/pl/learn/building_programs/managing_libraries/index.html index a199023144ea..e34363543f6d 100644 --- a/pl/learn/building_programs/managing_libraries/index.html +++ b/pl/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/project_make/index.html b/pl/learn/building_programs/project_make/index.html index f8753c9fc6cf..3201878092b9 100644 --- a/pl/learn/building_programs/project_make/index.html +++ b/pl/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/building_programs/runtime_libraries/index.html b/pl/learn/building_programs/runtime_libraries/index.html index a6c6288ca498..cabc01bea141 100644 --- a/pl/learn/building_programs/runtime_libraries/index.html +++ b/pl/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/index.html b/pl/learn/index.html index 2b8cd8ceffee..f57447ae265d 100644 --- a/pl/learn/index.html +++ b/pl/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/array/index.html b/pl/learn/intrinsics/array/index.html index ee0726b3f602..ed83be9c50f4 100644 --- a/pl/learn/intrinsics/array/index.html +++ b/pl/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/bit/index.html b/pl/learn/intrinsics/bit/index.html index 295adb6a6635..88280a3846b7 100644 --- a/pl/learn/intrinsics/bit/index.html +++ b/pl/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/cfi/index.html b/pl/learn/intrinsics/cfi/index.html index d41345575409..7b9168145ef9 100644 --- a/pl/learn/intrinsics/cfi/index.html +++ b/pl/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/character/index.html b/pl/learn/intrinsics/character/index.html index 14263273a656..6672e501ebba 100644 --- a/pl/learn/intrinsics/character/index.html +++ b/pl/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/compiler/index.html b/pl/learn/intrinsics/compiler/index.html index cb5d312f081b..397159622c56 100644 --- a/pl/learn/intrinsics/compiler/index.html +++ b/pl/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/index.html b/pl/learn/intrinsics/index.html index 26f3ff83e21f..85d994e5e458 100644 --- a/pl/learn/intrinsics/index.html +++ b/pl/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/math/index.html b/pl/learn/intrinsics/math/index.html index 8eaf82dc66ba..f277095a32c2 100644 --- a/pl/learn/intrinsics/math/index.html +++ b/pl/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/model/index.html b/pl/learn/intrinsics/model/index.html index 9b74b94edd4e..32c53e7621cc 100644 --- a/pl/learn/intrinsics/model/index.html +++ b/pl/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/numeric/index.html b/pl/learn/intrinsics/numeric/index.html index 43a15b7da034..291eda41b4d0 100644 --- a/pl/learn/intrinsics/numeric/index.html +++ b/pl/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/parallel/index.html b/pl/learn/intrinsics/parallel/index.html index 1d1e130f5f85..e29159a63748 100644 --- a/pl/learn/intrinsics/parallel/index.html +++ b/pl/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/state/index.html b/pl/learn/intrinsics/state/index.html index d59da12bc95a..ad60f64d4246 100644 --- a/pl/learn/intrinsics/state/index.html +++ b/pl/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/system/index.html b/pl/learn/intrinsics/system/index.html index d6e27ec769d4..36254f3ab961 100644 --- a/pl/learn/intrinsics/system/index.html +++ b/pl/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/transform/index.html b/pl/learn/intrinsics/transform/index.html index f7734f6436c2..f5ecad0b6026 100644 --- a/pl/learn/intrinsics/transform/index.html +++ b/pl/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/intrinsics/type/index.html b/pl/learn/intrinsics/type/index.html index bece3f1d958c..9798f62040bc 100644 --- a/pl/learn/intrinsics/type/index.html +++ b/pl/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/choose_compiler/index.html b/pl/learn/os_setup/choose_compiler/index.html index 7acc8c083f20..b492e4117189 100644 --- a/pl/learn/os_setup/choose_compiler/index.html +++ b/pl/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/ides/index.html b/pl/learn/os_setup/ides/index.html index 07d37cfbbf6c..2bf96e6f7f17 100644 --- a/pl/learn/os_setup/ides/index.html +++ b/pl/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/index.html b/pl/learn/os_setup/index.html index 27f1f6db9e1d..621f73340243 100644 --- a/pl/learn/os_setup/index.html +++ b/pl/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/install_gfortran/index.html b/pl/learn/os_setup/install_gfortran/index.html index d5ab942997a1..cd3d927dd149 100644 --- a/pl/learn/os_setup/install_gfortran/index.html +++ b/pl/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/text_editors/index.html b/pl/learn/os_setup/text_editors/index.html index 521fb50391b2..bbc1e5908531 100644 --- a/pl/learn/os_setup/text_editors/index.html +++ b/pl/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/os_setup/tips/index.html b/pl/learn/os_setup/tips/index.html index 76d12e75f3bc..c68d67a1aeea 100644 --- a/pl/learn/os_setup/tips/index.html +++ b/pl/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/arrays_strings/index.html b/pl/learn/quickstart/arrays_strings/index.html index f03c8bff20ff..da7aec605d7b 100644 --- a/pl/learn/quickstart/arrays_strings/index.html +++ b/pl/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/derived_types/index.html b/pl/learn/quickstart/derived_types/index.html index a575de7b7cd3..3c687eee8c05 100644 --- a/pl/learn/quickstart/derived_types/index.html +++ b/pl/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/hello_world/index.html b/pl/learn/quickstart/hello_world/index.html index 4517efb306e7..83d539e970d9 100644 --- a/pl/learn/quickstart/hello_world/index.html +++ b/pl/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/index.html b/pl/learn/quickstart/index.html index bb91ec3079c2..fb9cad4e6229 100644 --- a/pl/learn/quickstart/index.html +++ b/pl/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/operators_control_flow/index.html b/pl/learn/quickstart/operators_control_flow/index.html index 33700f9a1348..3aa56c2b6c5b 100644 --- a/pl/learn/quickstart/operators_control_flow/index.html +++ b/pl/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/organising_code/index.html b/pl/learn/quickstart/organising_code/index.html index 6f532c11e926..5ae93a13eced 100644 --- a/pl/learn/quickstart/organising_code/index.html +++ b/pl/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/learn/quickstart/variables/index.html b/pl/learn/quickstart/variables/index.html index 2dbfa7f51442..5512e7756d38 100644 --- a/pl/learn/quickstart/variables/index.html +++ b/pl/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2020/02-28-J3-february-meeting/index.html b/pl/news/2020/02-28-J3-february-meeting/index.html index 545f9f65f2b2..9acbe6d2d09d 100644 --- a/pl/news/2020/02-28-J3-february-meeting/index.html +++ b/pl/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2020/04-06-Announcing-FortranCon-2020/index.html b/pl/news/2020/04-06-Announcing-FortranCon-2020/index.html index f067d50bde19..82720d29e51f 100644 --- a/pl/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/pl/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2020/04-18-Fortran-Webinar/index.html b/pl/news/2020/04-18-Fortran-Webinar/index.html index fc73f75b0dd7..813dd077f910 100644 --- a/pl/news/2020/04-18-Fortran-Webinar/index.html +++ b/pl/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/pl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 715b7d79dc94..912b43a975d1 100644 --- a/pl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/pl/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/pl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index e84df435a51b..aac103f3d29b 100644 --- a/pl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/pl/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/pl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 81eeae6fc8c6..41611b4ec3e3 100644 --- a/pl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/pl/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , diff --git a/pl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/pl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 598194fe8376..9601bd251e85 100644 --- a/pl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/pl/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Laurence Kedward + Milan Curcic , @@ -433,7 +436,7 @@

- Milan Curcic + Laurence Kedward , diff --git a/pl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/pl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index ce0077196153..c663b3e4e2b7 100644 --- a/pl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/pl/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -447,14 +450,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas diff --git a/pl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/pl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index 55fcbbba5656..2b2a76a41633 100644 --- a/pl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/pl/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -440,14 +443,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas diff --git a/pl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/pl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 8c7d034376b5..83c42b1dec01 100644 --- a/pl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/pl/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas diff --git a/pl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/pl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index 1c623da61883..66a6ab7b40b9 100644 --- a/pl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/pl/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Laurence Kedward + Milan Curcic , @@ -440,7 +443,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/2020/index.html b/pl/news/2020/index.html index 6d6b8aa74326..038cc6f80ec2 100644 --- a/pl/news/2020/index.html +++ b/pl/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Laurence Kedward + Milan Curcic , @@ -540,7 +543,7 @@

- Milan Curcic + Laurence Kedward @@ -600,56 +603,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -709,21 +712,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -737,14 +740,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -804,28 +807,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -839,14 +842,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -913,7 +916,7 @@

- Laurence Kedward + Milan Curcic , @@ -927,7 +930,7 @@

- Milan Curcic + Laurence Kedward , @@ -994,14 +997,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , @@ -1068,14 +1071,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/pl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 87cb2fc93a4d..39a1097e4095 100644 --- a/pl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/pl/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -447,7 +450,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/pl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index 57540d0dea85..558e696c1bd8 100644 --- a/pl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/pl/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -440,7 +443,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/pl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 83f53704b479..354d9ee273e4 100644 --- a/pl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/pl/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/pl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/pl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 2c321258e91c..b276ce7730a2 100644 --- a/pl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/pl/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -426,42 +429,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus diff --git a/pl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/pl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index 353428e268d6..44c5bfba6e7d 100644 --- a/pl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/pl/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -426,21 +429,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward diff --git a/pl/news/2021/04-20-First-Year/index.html b/pl/news/2021/04-20-First-Year/index.html index 8b69c530b2dc..62f250e213b3 100644 --- a/pl/news/2021/04-20-First-Year/index.html +++ b/pl/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Ondřej Čertík , @@ -433,7 +436,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/pl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/pl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 499664bbde62..f1a117b3725f 100644 --- a/pl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/pl/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -426,21 +429,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward diff --git a/pl/news/2021/05-18-Welcome-GSoC-students/index.html b/pl/news/2021/05-18-Welcome-GSoC-students/index.html index aa5442229d50..2d7ffa2fb84a 100644 --- a/pl/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/pl/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus diff --git a/pl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/pl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index ef282ab8256c..71085c76c165 100644 --- a/pl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/pl/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,7 +422,7 @@

- Milan Curcic + Laurence Kedward , @@ -433,7 +436,7 @@

- Laurence Kedward + Milan Curcic diff --git a/pl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/pl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 634ee45b83c3..2089633b5bd4 100644 --- a/pl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/pl/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward diff --git a/pl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/pl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index 905802006f89..a42c0ad8b461 100644 --- a/pl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/pl/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/pl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/pl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 48913f1c5ce3..1162a21cc74c 100644 --- a/pl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/pl/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/pl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/pl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 4f15e8806e88..1eabc3028855 100644 --- a/pl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/pl/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/pl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index c8a7f6c32a63..f32f55af8025 100644 --- a/pl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/pl/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/pl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/pl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 30adaec6c6ec..08b03969e769 100644 --- a/pl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/pl/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/pl/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/pl/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 02121d9e5cae..064f1c13a342 100644 --- a/pl/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/pl/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -440,7 +443,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/2021/index.html b/pl/news/2021/index.html index f98c1dd1c5c2..d9228be0cce3 100644 --- a/pl/news/2021/index.html +++ b/pl/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -540,7 +543,7 @@

- Milan Curcic + Laurence Kedward @@ -616,14 +619,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -690,21 +693,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -845,21 +848,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -926,14 +929,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -993,35 +996,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1088,7 +1091,7 @@

- Milan Curcic + Laurence Kedward , @@ -1102,7 +1105,7 @@

- Laurence Kedward + Milan Curcic @@ -1162,42 +1165,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1259,7 +1262,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1273,21 +1276,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1354,7 +1357,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1368,7 +1371,7 @@

- Ondřej Čertík + Milan Curcic @@ -1434,7 +1437,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1448,21 +1451,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1522,7 +1525,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -1536,42 +1539,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1638,14 +1641,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1705,21 +1708,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -1733,7 +1736,7 @@

- Milan Curcic + Laurence Kedward @@ -1793,28 +1796,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -1828,7 +1831,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/pl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index b07e52ba78cc..96ff990dcbef 100644 --- a/pl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/pl/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -426,21 +429,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas diff --git a/pl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/pl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index f1d1ede53ae3..2cb5ec4abae6 100644 --- a/pl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/pl/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas diff --git a/pl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/pl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index f55bbf195cb1..55b2ec5e216e 100644 --- a/pl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/pl/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic diff --git a/pl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/pl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 6e73eb4108ed..c57d67ba169f 100644 --- a/pl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/pl/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/pl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/pl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index aac22f2dda91..8afcdf7d44d6 100644 --- a/pl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/pl/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic diff --git a/pl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/pl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index b3c8368288d2..bc8821dd9ab7 100644 --- a/pl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/pl/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Henil Panchal , @@ -433,7 +436,7 @@

- Henil Panchal + Milan Curcic diff --git a/pl/news/2022/index.html b/pl/news/2022/index.html index a8a0569ba37c..cc13b13e5a14 100644 --- a/pl/news/2022/index.html +++ b/pl/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -903,7 +906,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -917,21 +920,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas diff --git a/pl/news/archive/index.html b/pl/news/archive/index.html index 02f18e65210a..90d4c1c267e6 100644 --- a/pl/news/archive/index.html +++ b/pl/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/atom.xml b/pl/news/atom.xml index 228dcae06228..afb5598b249f 100644 --- a/pl/news/atom.xml +++ b/pl/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:14:25.452993+00:00 + 2023-05-22T09:20:20.322245+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Henil Panchal + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Gagandeep Singh + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -51,7 +51,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: April 2022 2022-04-07T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Milan Curcic + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -191,7 +191,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Zachary Moon + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Laurence Kedward + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Brad Richardson + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we’ve had several updates to t First year of the Fortran website 2021-04-20T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Brad Richardson + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -447,7 +447,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: February 2021 2021-02-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2021 edition of the monthly Fortran newsletter. @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Milan Curcic + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Brad Richardson + Jeremie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Brad Richardson + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Brad Richardson + Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. diff --git a/pl/news/author/alexis-perry-holby/index.html b/pl/news/author/alexis-perry-holby/index.html index 35a07fe752f7..cce223818528 100644 --- a/pl/news/author/alexis-perry-holby/index.html +++ b/pl/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -903,7 +906,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -917,21 +920,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -999,14 +1002,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -1073,21 +1076,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1228,21 +1231,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1302,7 +1305,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1316,21 +1319,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1390,7 +1393,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1404,21 +1407,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1478,21 +1481,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -1506,7 +1509,7 @@

- Milan Curcic + Laurence Kedward diff --git a/pl/news/author/and-jeremie-vandenplas/index.html b/pl/news/author/and-jeremie-vandenplas/index.html index 2e9f321cb426..04fdb0fa4499 100644 --- a/pl/news/author/and-jeremie-vandenplas/index.html +++ b/pl/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , diff --git a/pl/news/author/and-laurence-kedward/index.html b/pl/news/author/and-laurence-kedward/index.html index 1744c33226fe..6c8615539302 100644 --- a/pl/news/author/and-laurence-kedward/index.html +++ b/pl/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -540,14 +543,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -607,28 +610,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -642,14 +645,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas diff --git a/pl/news/author/arjen-markus-and-gary-klimowicz/index.html b/pl/news/author/arjen-markus-and-gary-klimowicz/index.html index 28a251614caa..3e463a37ad41 100644 --- a/pl/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/pl/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,7 +522,7 @@

- Laurence Kedward + Milan Curcic , @@ -533,7 +536,7 @@

- Milan Curcic + Laurence Kedward , diff --git a/pl/news/author/arjen-markus/index.html b/pl/news/author/arjen-markus/index.html index f18462a5dd1b..22894bf50cea 100644 --- a/pl/news/author/arjen-markus/index.html +++ b/pl/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -609,7 +612,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -623,42 +626,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus diff --git a/pl/news/author/brad-richardson/index.html b/pl/news/author/brad-richardson/index.html index adedba86376a..98a38bf17e41 100644 --- a/pl/news/author/brad-richardson/index.html +++ b/pl/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -616,7 +619,7 @@

- Milan Curcic + Ondřej Čertík , @@ -630,7 +633,7 @@

- Ondřej Čertík + Milan Curcic @@ -696,7 +699,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -710,42 +713,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -805,56 +808,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -914,21 +917,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -942,14 +945,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -1009,28 +1012,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -1044,14 +1047,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -1111,14 +1114,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/news/author/damian-rouson/index.html b/pl/news/author/damian-rouson/index.html index 31e489c4b77d..ff1010b72d22 100644 --- a/pl/news/author/damian-rouson/index.html +++ b/pl/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -526,42 +529,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus diff --git a/pl/news/author/gagandeep-singh/index.html b/pl/news/author/gagandeep-singh/index.html index 2d76664db190..32b496dbde8d 100644 --- a/pl/news/author/gagandeep-singh/index.html +++ b/pl/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -593,35 +596,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas diff --git a/pl/news/author/gary-klimowicz/index.html b/pl/news/author/gary-klimowicz/index.html index fb12c242d106..14b280b6684b 100644 --- a/pl/news/author/gary-klimowicz/index.html +++ b/pl/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -547,7 +550,7 @@

- Milan Curcic + Laurence Kedward @@ -615,7 +618,7 @@

- Laurence Kedward + Milan Curcic , @@ -636,7 +639,7 @@

- Milan Curcic + Laurence Kedward @@ -696,56 +699,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -805,21 +808,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -833,14 +836,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -900,28 +903,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -935,14 +938,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas diff --git a/pl/news/author/giannis-nikiteas/index.html b/pl/news/author/giannis-nikiteas/index.html index a88f1ea28d02..fe24e147861a 100644 --- a/pl/news/author/giannis-nikiteas/index.html +++ b/pl/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic diff --git a/pl/news/author/henil-panchal/index.html b/pl/news/author/henil-panchal/index.html index 589b4507e680..3311ea81e19d 100644 --- a/pl/news/author/henil-panchal/index.html +++ b/pl/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic diff --git a/pl/news/author/index.html b/pl/news/author/index.html index 711501f02320..79d3a31ec076 100644 --- a/pl/news/author/index.html +++ b/pl/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/author/ivan-pribec/index.html b/pl/news/author/ivan-pribec/index.html index 316eb7fd6fdd..eec8d69fd64f 100644 --- a/pl/news/author/ivan-pribec/index.html +++ b/pl/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas diff --git a/pl/news/author/jeremie-vandenplas/index.html b/pl/news/author/jeremie-vandenplas/index.html index e1730fe0c0e5..509c0b934b7d 100644 --- a/pl/news/author/jeremie-vandenplas/index.html +++ b/pl/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -600,7 +603,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -614,21 +617,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -689,21 +692,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -717,7 +720,7 @@

- Milan Curcic + Laurence Kedward @@ -786,21 +789,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -814,7 +817,7 @@

- Milan Curcic + Laurence Kedward @@ -874,28 +877,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -909,7 +912,7 @@

- Milan Curcic + Laurence Kedward @@ -977,7 +980,7 @@

- Laurence Kedward + Milan Curcic , @@ -998,7 +1001,7 @@

- Milan Curcic + Laurence Kedward @@ -1058,21 +1061,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -1086,14 +1089,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -1153,28 +1156,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -1188,14 +1191,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -1262,7 +1265,7 @@

- Laurence Kedward + Milan Curcic , @@ -1276,7 +1279,7 @@

- Milan Curcic + Laurence Kedward , diff --git a/pl/news/author/laurence-kedward/index.html b/pl/news/author/laurence-kedward/index.html index b727ccf62584..afd61389c7fb 100644 --- a/pl/news/author/laurence-kedward/index.html +++ b/pl/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -540,7 +543,7 @@

- Milan Curcic + Laurence Kedward @@ -690,14 +693,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -757,35 +760,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -852,7 +855,7 @@

- Milan Curcic + Laurence Kedward , @@ -866,7 +869,7 @@

- Laurence Kedward + Milan Curcic @@ -926,42 +929,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1023,7 +1026,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1037,21 +1040,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1118,7 +1121,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1132,7 +1135,7 @@

- Ondřej Čertík + Milan Curcic @@ -1198,7 +1201,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1212,21 +1215,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1286,7 +1289,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -1300,42 +1303,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1402,14 +1405,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1469,21 +1472,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -1497,7 +1500,7 @@

- Milan Curcic + Laurence Kedward @@ -1557,28 +1560,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -1592,7 +1595,7 @@

- Milan Curcic + Laurence Kedward @@ -1660,7 +1663,7 @@

- Laurence Kedward + Milan Curcic , @@ -1681,7 +1684,7 @@

- Milan Curcic + Laurence Kedward @@ -1741,56 +1744,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -1857,7 +1860,7 @@

- Laurence Kedward + Milan Curcic , @@ -1871,7 +1874,7 @@

- Milan Curcic + Laurence Kedward , @@ -1938,14 +1941,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , diff --git a/pl/news/author/marshall-ward/index.html b/pl/news/author/marshall-ward/index.html index 6968e4ef6b9b..8d8979eb4fc7 100644 --- a/pl/news/author/marshall-ward/index.html +++ b/pl/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -526,42 +529,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus diff --git a/pl/news/author/milan-curcic-and-ondrej-certik/index.html b/pl/news/author/milan-curcic-and-ondrej-certik/index.html index 829081cb1a22..0350470e7393 100644 --- a/pl/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/pl/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/news/author/milan-curcic/index.html b/pl/news/author/milan-curcic/index.html index 02656aac0397..31f114c3c188 100644 --- a/pl/news/author/milan-curcic/index.html +++ b/pl/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -903,7 +906,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -917,21 +920,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -992,21 +995,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -1020,7 +1023,7 @@

- Milan Curcic + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -1170,21 +1173,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1251,21 +1254,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1332,14 +1335,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1399,35 +1402,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1494,7 +1497,7 @@

- Milan Curcic + Laurence Kedward , @@ -1508,7 +1511,7 @@

- Laurence Kedward + Milan Curcic @@ -1568,42 +1571,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1665,7 +1668,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1679,21 +1682,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1760,7 +1763,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1774,7 +1777,7 @@

- Ondřej Čertík + Milan Curcic @@ -1840,7 +1843,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1854,21 +1857,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1928,7 +1931,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -1942,42 +1945,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -2044,14 +2047,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2111,21 +2114,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -2139,7 +2142,7 @@

- Milan Curcic + Laurence Kedward @@ -2199,28 +2202,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -2234,7 +2237,7 @@

- Milan Curcic + Laurence Kedward @@ -2302,7 +2305,7 @@

- Laurence Kedward + Milan Curcic , @@ -2323,7 +2326,7 @@

- Milan Curcic + Laurence Kedward @@ -2383,56 +2386,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -2492,21 +2495,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2520,14 +2523,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2587,28 +2590,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2622,14 +2625,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2696,7 +2699,7 @@

- Laurence Kedward + Milan Curcic , @@ -2710,7 +2713,7 @@

- Milan Curcic + Laurence Kedward , @@ -2777,14 +2780,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , diff --git a/pl/news/author/ondrej-certik-and-zach-jibben/index.html b/pl/news/author/ondrej-certik-and-zach-jibben/index.html index 9bbc5fea5a18..f872e2df2104 100644 --- a/pl/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/pl/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/author/ondrej-certik/index.html b/pl/news/author/ondrej-certik/index.html index b6ddfb5ae4b9..1a3693e12368 100644 --- a/pl/news/author/ondrej-certik/index.html +++ b/pl/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,21 +596,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -667,7 +670,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -681,21 +684,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -756,21 +759,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -784,7 +787,7 @@

- Milan Curcic + Laurence Kedward @@ -860,21 +863,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1015,21 +1018,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1096,14 +1099,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1163,35 +1166,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1258,7 +1261,7 @@

- Milan Curcic + Laurence Kedward , @@ -1272,7 +1275,7 @@

- Laurence Kedward + Milan Curcic @@ -1332,42 +1335,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1429,7 +1432,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1443,21 +1446,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1524,7 +1527,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1538,7 +1541,7 @@

- Ondřej Čertík + Milan Curcic @@ -1604,7 +1607,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1618,21 +1621,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1692,7 +1695,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -1706,42 +1709,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1808,14 +1811,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1875,28 +1878,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -1910,7 +1913,7 @@

- Milan Curcic + Laurence Kedward @@ -1978,7 +1981,7 @@

- Laurence Kedward + Milan Curcic , @@ -1999,7 +2002,7 @@

- Milan Curcic + Laurence Kedward @@ -2059,56 +2062,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -2168,21 +2171,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2196,14 +2199,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2263,28 +2266,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2298,14 +2301,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2372,7 +2375,7 @@

- Laurence Kedward + Milan Curcic , @@ -2386,7 +2389,7 @@

- Milan Curcic + Laurence Kedward , diff --git a/pl/news/author/sebastian-ehlert/index.html b/pl/news/author/sebastian-ehlert/index.html index a41567d88bcd..e8f57192255d 100644 --- a/pl/news/author/sebastian-ehlert/index.html +++ b/pl/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -600,7 +603,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -614,21 +617,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -689,21 +692,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -717,7 +720,7 @@

- Milan Curcic + Laurence Kedward @@ -793,14 +796,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -867,21 +870,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -948,21 +951,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1022,35 +1025,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1117,7 +1120,7 @@

- Milan Curcic + Laurence Kedward , @@ -1131,7 +1134,7 @@

- Laurence Kedward + Milan Curcic @@ -1191,42 +1194,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1288,7 +1291,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1302,21 +1305,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1376,7 +1379,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1390,21 +1393,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1464,7 +1467,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -1478,42 +1481,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1573,21 +1576,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -1601,7 +1604,7 @@

- Milan Curcic + Laurence Kedward @@ -1661,28 +1664,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -1696,7 +1699,7 @@

- Milan Curcic + Laurence Kedward @@ -1757,56 +1760,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas diff --git a/pl/news/author/thomas-konig/index.html b/pl/news/author/thomas-konig/index.html index ca24c8bba0c6..4f2e87175f15 100644 --- a/pl/news/author/thomas-konig/index.html +++ b/pl/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -547,14 +550,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas diff --git a/pl/news/author/zachary-moon/index.html b/pl/news/author/zachary-moon/index.html index 77f55aeb939d..db47bd9aaaa4 100644 --- a/pl/news/author/zachary-moon/index.html +++ b/pl/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward diff --git a/pl/news/category/index.html b/pl/news/category/index.html index 96f6acbb5bf6..602f53cbe46e 100644 --- a/pl/news/category/index.html +++ b/pl/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/category/newsletter/index.html b/pl/news/category/newsletter/index.html index f6352def9329..f087c90a8c92 100644 --- a/pl/news/category/newsletter/index.html +++ b/pl/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -903,7 +906,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -917,21 +920,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -992,21 +995,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -1020,7 +1023,7 @@

- Milan Curcic + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -1170,21 +1173,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1325,21 +1328,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1406,14 +1409,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1473,35 +1476,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1568,7 +1571,7 @@

- Milan Curcic + Laurence Kedward , @@ -1582,7 +1585,7 @@

- Laurence Kedward + Milan Curcic @@ -1642,42 +1645,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1739,7 +1742,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1753,21 +1756,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1834,7 +1837,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1848,7 +1851,7 @@

- Ondřej Čertík + Milan Curcic @@ -1914,7 +1917,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1928,21 +1931,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -2002,7 +2005,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -2016,42 +2019,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -2118,14 +2121,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2185,21 +2188,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -2213,7 +2216,7 @@

- Milan Curcic + Laurence Kedward @@ -2273,28 +2276,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -2308,7 +2311,7 @@

- Milan Curcic + Laurence Kedward @@ -2376,7 +2379,7 @@

- Laurence Kedward + Milan Curcic , @@ -2397,7 +2400,7 @@

- Milan Curcic + Laurence Kedward @@ -2457,56 +2460,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -2566,21 +2569,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2594,14 +2597,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2661,28 +2664,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2696,14 +2699,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2770,7 +2773,7 @@

- Laurence Kedward + Milan Curcic , @@ -2784,7 +2787,7 @@

- Milan Curcic + Laurence Kedward , @@ -2851,14 +2854,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/news/drafts/index.html b/pl/news/drafts/index.html index 3df8afa2a9dc..4db1c076e88e 100644 --- a/pl/news/drafts/index.html +++ b/pl/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/news/index.html b/pl/news/index.html index f1663f483ea5..eaf1961d7a5c 100644 --- a/pl/news/index.html +++ b/pl/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Henil Panchal , @@ -533,7 +536,7 @@

- Henil Panchal + Milan Curcic @@ -593,28 +596,28 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , - Gagandeep Singh + Milan Curcic @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -741,21 +744,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -903,7 +906,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -917,21 +920,21 @@

- Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert , - Milan Curcic + Jérémie Vandenplas @@ -992,21 +995,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Sebastian Ehlert , @@ -1020,7 +1023,7 @@

- Milan Curcic + Laurence Kedward @@ -1096,14 +1099,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -1170,21 +1173,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1325,21 +1328,21 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1406,14 +1409,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -1473,35 +1476,35 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Laurence Kedward + Zachary Moon , - Milan Curcic + Sebastian Ehlert , - Zachary Moon + Laurence Kedward @@ -1568,7 +1571,7 @@

- Milan Curcic + Laurence Kedward , @@ -1582,7 +1585,7 @@

- Laurence Kedward + Milan Curcic @@ -1642,42 +1645,42 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -1739,7 +1742,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1753,21 +1756,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -1834,7 +1837,7 @@

- Milan Curcic + Ondřej Čertík , @@ -1848,7 +1851,7 @@

- Ondřej Čertík + Milan Curcic @@ -1914,7 +1917,7 @@

- Sebastian Ehlert + Alexis Perry-Holby , @@ -1928,21 +1931,21 @@

- Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , - Milan Curcic + Laurence Kedward @@ -2002,7 +2005,7 @@

- Sebastian Ehlert + Damian Rouson , @@ -2016,42 +2019,42 @@

- Marshall Ward + Brad Richardson , - Laurence Kedward + Milan Curcic , - Milan Curcic + Marshall Ward , - Arjen Markus + Sebastian Ehlert , - Damian Rouson + Laurence Kedward , - Brad Richardson + Arjen Markus @@ -2118,14 +2121,14 @@

- Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Milan Curcic @@ -2185,21 +2188,21 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Laurence Kedward + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert , @@ -2213,7 +2216,7 @@

- Milan Curcic + Laurence Kedward @@ -2273,28 +2276,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Milan Curcic , - Gary Klimowicz + Sebastian Ehlert , - Laurence Kedward + Gary Klimowicz , @@ -2308,7 +2311,7 @@

- Milan Curcic + Laurence Kedward @@ -2376,7 +2379,7 @@

- Laurence Kedward + Milan Curcic , @@ -2397,7 +2400,7 @@

- Milan Curcic + Laurence Kedward @@ -2457,56 +2460,56 @@

- Sebastian Ehlert + Ondřej Čertík , - Ondřej Čertík + Brad Richardson , - Laurence Kedward + Milan Curcic , - Gary Klimowicz + Ivan Pribec , - Ivan Pribec + Sebastian Ehlert , - Jeremie Vandenplas + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Brad Richardson + Jeremie Vandenplas @@ -2566,21 +2569,21 @@

- Ondřej Čertík + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2594,14 +2597,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2661,28 +2664,28 @@

- Ondřej Čertík + Thomas König , - Thomas König + and Laurence Kedward , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson , @@ -2696,14 +2699,14 @@

- and Laurence Kedward + Gary Klimowicz , - Brad Richardson + Jérémie Vandenplas @@ -2770,7 +2773,7 @@

- Laurence Kedward + Milan Curcic , @@ -2784,7 +2787,7 @@

- Milan Curcic + Laurence Kedward , @@ -2851,14 +2854,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas , @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/pl/packages/data-types/index.html b/pl/packages/data-types/index.html index a6896d2a10a7..c58cf320b744 100644 --- a/pl/packages/data-types/index.html +++ b/pl/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/examples/index.html b/pl/packages/examples/index.html index 36f766f15e1f..e50a404704c8 100644 --- a/pl/packages/examples/index.html +++ b/pl/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/graphics/index.html b/pl/packages/graphics/index.html index 75660c9b3c68..41a710118e65 100644 --- a/pl/packages/graphics/index.html +++ b/pl/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/index.html b/pl/packages/index.html index 05a0da9f3413..db7ba3c93e4f 100644 --- a/pl/packages/index.html +++ b/pl/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/interfaces/index.html b/pl/packages/interfaces/index.html index 622e33fd5bf7..a0177e82c5b9 100644 --- a/pl/packages/interfaces/index.html +++ b/pl/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/io/index.html b/pl/packages/io/index.html index 262b28d4d7c8..b908acb3ac99 100644 --- a/pl/packages/io/index.html +++ b/pl/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/libraries/index.html b/pl/packages/libraries/index.html index 75b9b104720a..be4a93d8138c 100644 --- a/pl/packages/libraries/index.html +++ b/pl/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/numerical/index.html b/pl/packages/numerical/index.html index e377815ff95c..d14b59c525ca 100644 --- a/pl/packages/numerical/index.html +++ b/pl/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/programming/index.html b/pl/packages/programming/index.html index 8d366fc6596e..083c4eaf9d37 100644 --- a/pl/packages/programming/index.html +++ b/pl/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/scientific/index.html b/pl/packages/scientific/index.html index ca73d881de44..8d6eaa1f67d9 100644 --- a/pl/packages/scientific/index.html +++ b/pl/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/packages/strings/index.html b/pl/packages/strings/index.html index c62821f51242..e8a6b7545323 100644 --- a/pl/packages/strings/index.html +++ b/pl/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/roadmap/index.html b/pl/roadmap/index.html index 8cf822bba9a2..690a496c4b69 100644 --- a/pl/roadmap/index.html +++ b/pl/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pl/search/index.html b/pl/search/index.html index 6d248d369cbd..73576858b6e0 100644 --- a/pl/search/index.html +++ b/pl/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/.doctrees/community.doctree b/pt/.doctrees/community.doctree index d5806d62f71e..d9067de73577 100644 Binary files a/pt/.doctrees/community.doctree and b/pt/.doctrees/community.doctree differ diff --git a/pt/.doctrees/community/contributing.doctree b/pt/.doctrees/community/contributing.doctree index 6c579d31adfc..e634e579e35f 100644 Binary files a/pt/.doctrees/community/contributing.doctree and b/pt/.doctrees/community/contributing.doctree differ diff --git a/pt/.doctrees/community/minibooks.doctree b/pt/.doctrees/community/minibooks.doctree index 530130808127..33e52be7283a 100644 Binary files a/pt/.doctrees/community/minibooks.doctree and b/pt/.doctrees/community/minibooks.doctree differ diff --git a/pt/.doctrees/community/packages.doctree b/pt/.doctrees/community/packages.doctree index cf8ae786adbb..7e1b43e8e851 100644 Binary files a/pt/.doctrees/community/packages.doctree and b/pt/.doctrees/community/packages.doctree differ diff --git a/pt/.doctrees/compilers.doctree b/pt/.doctrees/compilers.doctree index 278632772501..182272e10fda 100644 Binary files a/pt/.doctrees/compilers.doctree and b/pt/.doctrees/compilers.doctree differ diff --git a/pt/.doctrees/environment.pickle b/pt/.doctrees/environment.pickle index 3054e99a9913..11c7f01bb1d1 100644 Binary files a/pt/.doctrees/environment.pickle and b/pt/.doctrees/environment.pickle differ diff --git a/pt/.doctrees/index.doctree b/pt/.doctrees/index.doctree index c580fafcef7a..44e8a6ff5c7f 100644 Binary files a/pt/.doctrees/index.doctree and b/pt/.doctrees/index.doctree differ diff --git a/pt/.doctrees/learn.doctree b/pt/.doctrees/learn.doctree index 0124060a531c..2612d19f0f14 100644 Binary files a/pt/.doctrees/learn.doctree and b/pt/.doctrees/learn.doctree differ diff --git a/pt/.doctrees/learn/best_practices/allocatable_arrays.doctree b/pt/.doctrees/learn/best_practices/allocatable_arrays.doctree index 47098ad83108..642f3d419264 100644 Binary files a/pt/.doctrees/learn/best_practices/allocatable_arrays.doctree and b/pt/.doctrees/learn/best_practices/allocatable_arrays.doctree differ diff --git a/pt/.doctrees/learn/best_practices/arrays.doctree b/pt/.doctrees/learn/best_practices/arrays.doctree index 22678d9b7306..1e1645b8d498 100644 Binary files a/pt/.doctrees/learn/best_practices/arrays.doctree and b/pt/.doctrees/learn/best_practices/arrays.doctree differ diff --git a/pt/.doctrees/learn/best_practices/callbacks.doctree b/pt/.doctrees/learn/best_practices/callbacks.doctree index 61122700b433..23ed1b9c1533 100644 Binary files a/pt/.doctrees/learn/best_practices/callbacks.doctree and b/pt/.doctrees/learn/best_practices/callbacks.doctree differ diff --git a/pt/.doctrees/learn/best_practices/element_operations.doctree b/pt/.doctrees/learn/best_practices/element_operations.doctree index e8a9eabd341c..d9c45a2ede7f 100644 Binary files a/pt/.doctrees/learn/best_practices/element_operations.doctree and b/pt/.doctrees/learn/best_practices/element_operations.doctree differ diff --git a/pt/.doctrees/learn/best_practices/file_io.doctree b/pt/.doctrees/learn/best_practices/file_io.doctree index b4dd31c58bdf..421d72e12741 100644 Binary files a/pt/.doctrees/learn/best_practices/file_io.doctree and b/pt/.doctrees/learn/best_practices/file_io.doctree differ diff --git a/pt/.doctrees/learn/best_practices/floating_point.doctree b/pt/.doctrees/learn/best_practices/floating_point.doctree index 482d2630da7a..c94889784721 100644 Binary files a/pt/.doctrees/learn/best_practices/floating_point.doctree and b/pt/.doctrees/learn/best_practices/floating_point.doctree differ diff --git a/pt/.doctrees/learn/best_practices/integer_division.doctree b/pt/.doctrees/learn/best_practices/integer_division.doctree index 189e3ce01227..01e8c75f6ef8 100644 Binary files a/pt/.doctrees/learn/best_practices/integer_division.doctree and b/pt/.doctrees/learn/best_practices/integer_division.doctree differ diff --git a/pt/.doctrees/learn/best_practices/modules_programs.doctree b/pt/.doctrees/learn/best_practices/modules_programs.doctree index 9aae07f31a0f..39c3e56bd950 100644 Binary files a/pt/.doctrees/learn/best_practices/modules_programs.doctree and b/pt/.doctrees/learn/best_practices/modules_programs.doctree differ diff --git a/pt/.doctrees/learn/best_practices/multidim_arrays.doctree b/pt/.doctrees/learn/best_practices/multidim_arrays.doctree index 1c49b41080ad..dcede8dc0e80 100644 Binary files a/pt/.doctrees/learn/best_practices/multidim_arrays.doctree and b/pt/.doctrees/learn/best_practices/multidim_arrays.doctree differ diff --git a/pt/.doctrees/learn/best_practices/style_guide.doctree b/pt/.doctrees/learn/best_practices/style_guide.doctree index 59ccd86136a7..48fd81e1283a 100644 Binary files a/pt/.doctrees/learn/best_practices/style_guide.doctree and b/pt/.doctrees/learn/best_practices/style_guide.doctree differ diff --git a/pt/.doctrees/learn/building_programs/runtime_libraries.doctree b/pt/.doctrees/learn/building_programs/runtime_libraries.doctree index 7cf9bdafe52d..b1158dab2a5a 100644 Binary files a/pt/.doctrees/learn/building_programs/runtime_libraries.doctree and b/pt/.doctrees/learn/building_programs/runtime_libraries.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/array.doctree b/pt/.doctrees/learn/intrinsics/array.doctree index 95d95be1df64..b07a5feb949c 100644 Binary files a/pt/.doctrees/learn/intrinsics/array.doctree and b/pt/.doctrees/learn/intrinsics/array.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/bit.doctree b/pt/.doctrees/learn/intrinsics/bit.doctree index 344c0a98daaf..922bb1147298 100644 Binary files a/pt/.doctrees/learn/intrinsics/bit.doctree and b/pt/.doctrees/learn/intrinsics/bit.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/cfi.doctree b/pt/.doctrees/learn/intrinsics/cfi.doctree index c4302a2b4e72..341faf3904bc 100644 Binary files a/pt/.doctrees/learn/intrinsics/cfi.doctree and b/pt/.doctrees/learn/intrinsics/cfi.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/character.doctree b/pt/.doctrees/learn/intrinsics/character.doctree index a1c665e80b89..f71bd97bc8c2 100644 Binary files a/pt/.doctrees/learn/intrinsics/character.doctree and b/pt/.doctrees/learn/intrinsics/character.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/compiler.doctree b/pt/.doctrees/learn/intrinsics/compiler.doctree index 46dc5126fbc4..635647cb2a13 100644 Binary files a/pt/.doctrees/learn/intrinsics/compiler.doctree and b/pt/.doctrees/learn/intrinsics/compiler.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/index.doctree b/pt/.doctrees/learn/intrinsics/index.doctree index 5695faee9574..723a45bf4161 100644 Binary files a/pt/.doctrees/learn/intrinsics/index.doctree and b/pt/.doctrees/learn/intrinsics/index.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/math.doctree b/pt/.doctrees/learn/intrinsics/math.doctree index 2c32815d6418..7e367199a606 100644 Binary files a/pt/.doctrees/learn/intrinsics/math.doctree and b/pt/.doctrees/learn/intrinsics/math.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/model.doctree b/pt/.doctrees/learn/intrinsics/model.doctree index df7c717428d8..72eef0e02487 100644 Binary files a/pt/.doctrees/learn/intrinsics/model.doctree and b/pt/.doctrees/learn/intrinsics/model.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/numeric.doctree b/pt/.doctrees/learn/intrinsics/numeric.doctree index 41a070748b9c..4010f552e06b 100644 Binary files a/pt/.doctrees/learn/intrinsics/numeric.doctree and b/pt/.doctrees/learn/intrinsics/numeric.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/parallel.doctree b/pt/.doctrees/learn/intrinsics/parallel.doctree index 877e664b8f4b..8ffd724054b0 100644 Binary files a/pt/.doctrees/learn/intrinsics/parallel.doctree and b/pt/.doctrees/learn/intrinsics/parallel.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/state.doctree b/pt/.doctrees/learn/intrinsics/state.doctree index e9590b44d335..651dd69a4459 100644 Binary files a/pt/.doctrees/learn/intrinsics/state.doctree and b/pt/.doctrees/learn/intrinsics/state.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/system.doctree b/pt/.doctrees/learn/intrinsics/system.doctree index efc0ea447226..1b4b2023e928 100644 Binary files a/pt/.doctrees/learn/intrinsics/system.doctree and b/pt/.doctrees/learn/intrinsics/system.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/transform.doctree b/pt/.doctrees/learn/intrinsics/transform.doctree index fc2d60046aa7..df52ca67fbc2 100644 Binary files a/pt/.doctrees/learn/intrinsics/transform.doctree and b/pt/.doctrees/learn/intrinsics/transform.doctree differ diff --git a/pt/.doctrees/learn/intrinsics/type.doctree b/pt/.doctrees/learn/intrinsics/type.doctree index 567a99776470..f2b037ba10d6 100644 Binary files a/pt/.doctrees/learn/intrinsics/type.doctree and b/pt/.doctrees/learn/intrinsics/type.doctree differ diff --git a/pt/.doctrees/learn/os_setup/install_gfortran.doctree b/pt/.doctrees/learn/os_setup/install_gfortran.doctree index f7e94b5ec570..46a12cf005f3 100644 Binary files a/pt/.doctrees/learn/os_setup/install_gfortran.doctree and b/pt/.doctrees/learn/os_setup/install_gfortran.doctree differ diff --git a/pt/.doctrees/learn/os_setup/text_editors.doctree b/pt/.doctrees/learn/os_setup/text_editors.doctree index ec9a8599be47..ec07c6810415 100644 Binary files a/pt/.doctrees/learn/os_setup/text_editors.doctree and b/pt/.doctrees/learn/os_setup/text_editors.doctree differ diff --git a/pt/.doctrees/learn/quickstart/derived_types.doctree b/pt/.doctrees/learn/quickstart/derived_types.doctree index 86979e868b89..e2e767dc5214 100644 Binary files a/pt/.doctrees/learn/quickstart/derived_types.doctree and b/pt/.doctrees/learn/quickstart/derived_types.doctree differ diff --git a/pt/.doctrees/learn/quickstart/operators_control_flow.doctree b/pt/.doctrees/learn/quickstart/operators_control_flow.doctree index ecb0a4bd0517..d1c6480155cd 100644 Binary files a/pt/.doctrees/learn/quickstart/operators_control_flow.doctree and b/pt/.doctrees/learn/quickstart/operators_control_flow.doctree differ diff --git a/pt/.doctrees/learn/quickstart/organising_code.doctree b/pt/.doctrees/learn/quickstart/organising_code.doctree index 958febedd046..b76d4b02a206 100644 Binary files a/pt/.doctrees/learn/quickstart/organising_code.doctree and b/pt/.doctrees/learn/quickstart/organising_code.doctree differ diff --git a/pt/.doctrees/learn/quickstart/variables.doctree b/pt/.doctrees/learn/quickstart/variables.doctree index dbc0df5ec82d..af0f2ea9788f 100644 Binary files a/pt/.doctrees/learn/quickstart/variables.doctree and b/pt/.doctrees/learn/quickstart/variables.doctree differ diff --git a/pt/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree b/pt/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree index 36566bafbbdf..433c343a6b5d 100644 Binary files a/pt/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree and b/pt/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree differ diff --git a/pt/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree b/pt/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree index fdc99dd69b6e..5c3301b60746 100644 Binary files a/pt/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree and b/pt/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree differ diff --git a/pt/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree b/pt/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree index 9ebe2de03d9a..faeadd7278b1 100644 Binary files a/pt/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree and b/pt/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree differ diff --git a/pt/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree b/pt/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree index 924ba2c47995..7101750d2df4 100644 Binary files a/pt/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree and b/pt/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree differ diff --git a/pt/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree b/pt/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree index a2a525d84ae3..1cd10f85f2f6 100644 Binary files a/pt/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree and b/pt/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree differ diff --git a/pt/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree b/pt/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree index 5f184c0dbfe7..8f7599738a54 100644 Binary files a/pt/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree and b/pt/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree differ diff --git a/pt/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree b/pt/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree index c48097d4e3b8..3dbccac11494 100644 Binary files a/pt/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree and b/pt/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree differ diff --git a/pt/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree b/pt/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree index dc4a00c1eea5..fabf1b69ab40 100644 Binary files a/pt/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree and b/pt/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree differ diff --git a/pt/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree b/pt/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree index fa38fa1c68a2..d49f60766257 100644 Binary files a/pt/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree and b/pt/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree differ diff --git a/pt/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree b/pt/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree index 5b04c73dd44f..a02cb989a874 100644 Binary files a/pt/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree and b/pt/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree differ diff --git a/pt/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree b/pt/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree index 29189a2a511d..1147fdf060dc 100644 Binary files a/pt/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree and b/pt/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree differ diff --git a/pt/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree b/pt/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree index 8e1a294ea20f..8c4f77ac6b99 100644 Binary files a/pt/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree and b/pt/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree differ diff --git a/pt/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree b/pt/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree index 226b4e59d155..577616386498 100644 Binary files a/pt/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree and b/pt/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree differ diff --git a/pt/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree b/pt/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree index b3e3f8b6643f..3c85e1e1ac2d 100644 Binary files a/pt/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree and b/pt/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree differ diff --git a/pt/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree b/pt/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree index d5b4449354d2..8b4ce50ba0e7 100644 Binary files a/pt/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree and b/pt/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree differ diff --git a/pt/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree b/pt/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree index e704813f8c49..772221411ff0 100644 Binary files a/pt/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree and b/pt/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree differ diff --git a/pt/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree b/pt/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree index dd772fe5dd4d..c263a01ed261 100644 Binary files a/pt/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree and b/pt/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree differ diff --git a/pt/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree b/pt/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree index 8252bcfc0714..6aae3208a14a 100644 Binary files a/pt/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree and b/pt/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree differ diff --git a/pt/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree b/pt/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree index 4fc595d17f04..c04c4ee1bacd 100644 Binary files a/pt/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree and b/pt/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree differ diff --git a/pt/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree b/pt/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree index d3f146708ba8..612072eea8e6 100644 Binary files a/pt/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree and b/pt/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree differ diff --git a/pt/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree b/pt/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree index 1b67edc67154..61bb5a175c85 100644 Binary files a/pt/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree and b/pt/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree differ diff --git a/pt/.doctrees/packages.doctree b/pt/.doctrees/packages.doctree index a4b15b01cb10..989e2e33085f 100644 Binary files a/pt/.doctrees/packages.doctree and b/pt/.doctrees/packages.doctree differ diff --git a/pt/community/contributing/index.html b/pt/community/contributing/index.html index 10009bb3bbcc..033bb30c3f38 100644 --- a/pt/community/contributing/index.html +++ b/pt/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/community/history/index.html b/pt/community/history/index.html index cae4a9edce3d..1034c9edb9bf 100644 --- a/pt/community/history/index.html +++ b/pt/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/community/index.html b/pt/community/index.html index f008b6e4a546..4c783b59493b 100644 --- a/pt/community/index.html +++ b/pt/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/community/minibooks/index.html b/pt/community/minibooks/index.html index 549e9258cadf..859e7c515157 100644 --- a/pt/community/minibooks/index.html +++ b/pt/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/community/packages/index.html b/pt/community/packages/index.html index 30b84bc5200a..ce63eefa309b 100644 --- a/pt/community/packages/index.html +++ b/pt/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/compilers/index.html b/pt/compilers/index.html index fb3e74d70e44..c67ba990292a 100644 --- a/pt/compilers/index.html +++ b/pt/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/genindex/index.html b/pt/genindex/index.html index 49345f36f125..817579a0073f 100644 --- a/pt/genindex/index.html +++ b/pt/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/index.html b/pt/index.html index 3a34e7b088a0..048db41f235e 100644 --- a/pt/index.html +++ b/pt/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/allocatable_arrays/index.html b/pt/learn/best_practices/allocatable_arrays/index.html index 8ce9355d261a..27385e5353c5 100644 --- a/pt/learn/best_practices/allocatable_arrays/index.html +++ b/pt/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/arrays/index.html b/pt/learn/best_practices/arrays/index.html index 0646c2f6c00d..549cb9db2829 100644 --- a/pt/learn/best_practices/arrays/index.html +++ b/pt/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/callbacks/index.html b/pt/learn/best_practices/callbacks/index.html index 94b0cfb33052..990f97b60ebd 100644 --- a/pt/learn/best_practices/callbacks/index.html +++ b/pt/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/element_operations/index.html b/pt/learn/best_practices/element_operations/index.html index b9769380b0e3..c3e95264192f 100644 --- a/pt/learn/best_practices/element_operations/index.html +++ b/pt/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/file_io/index.html b/pt/learn/best_practices/file_io/index.html index 50393405a004..e491a33e12ad 100644 --- a/pt/learn/best_practices/file_io/index.html +++ b/pt/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/floating_point/index.html b/pt/learn/best_practices/floating_point/index.html index da2ca0216617..44f9409f147c 100644 --- a/pt/learn/best_practices/floating_point/index.html +++ b/pt/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/index.html b/pt/learn/best_practices/index.html index 8615da3090f5..5c39fd7c448b 100644 --- a/pt/learn/best_practices/index.html +++ b/pt/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/integer_division/index.html b/pt/learn/best_practices/integer_division/index.html index 9b2455acfc3f..a2e47e95a26a 100644 --- a/pt/learn/best_practices/integer_division/index.html +++ b/pt/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/modules_programs/index.html b/pt/learn/best_practices/modules_programs/index.html index 5025ed6215df..e7c94931ac7a 100644 --- a/pt/learn/best_practices/modules_programs/index.html +++ b/pt/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/multidim_arrays/index.html b/pt/learn/best_practices/multidim_arrays/index.html index f73e94db01c7..fd8168950ffb 100644 --- a/pt/learn/best_practices/multidim_arrays/index.html +++ b/pt/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/style_guide/index.html b/pt/learn/best_practices/style_guide/index.html index 1899e1d6ec79..4e3f716cd9c1 100644 --- a/pt/learn/best_practices/style_guide/index.html +++ b/pt/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/best_practices/type_casting/index.html b/pt/learn/best_practices/type_casting/index.html index 382501496dd6..1642567e63b5 100644 --- a/pt/learn/best_practices/type_casting/index.html +++ b/pt/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/build_tools/index.html b/pt/learn/building_programs/build_tools/index.html index 0a490e26b3fb..134b63687107 100644 --- a/pt/learn/building_programs/build_tools/index.html +++ b/pt/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/compiling_source/index.html b/pt/learn/building_programs/compiling_source/index.html index 249296dcc174..d69133f7c189 100644 --- a/pt/learn/building_programs/compiling_source/index.html +++ b/pt/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/distributing/index.html b/pt/learn/building_programs/distributing/index.html index 3477ef15dffc..bd550021e92b 100644 --- a/pt/learn/building_programs/distributing/index.html +++ b/pt/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/include_files/index.html b/pt/learn/building_programs/include_files/index.html index 4d9d6a29188d..ff0740b2eb1b 100644 --- a/pt/learn/building_programs/include_files/index.html +++ b/pt/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/index.html b/pt/learn/building_programs/index.html index 1a2b2e1b4e2a..40a7bd897b09 100644 --- a/pt/learn/building_programs/index.html +++ b/pt/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/linking_pieces/index.html b/pt/learn/building_programs/linking_pieces/index.html index 58f46b5c6386..212170ff5715 100644 --- a/pt/learn/building_programs/linking_pieces/index.html +++ b/pt/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/managing_libraries/index.html b/pt/learn/building_programs/managing_libraries/index.html index 8893bcc54b8d..309e869b3d34 100644 --- a/pt/learn/building_programs/managing_libraries/index.html +++ b/pt/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/project_make/index.html b/pt/learn/building_programs/project_make/index.html index 8c380c5b2030..56cc8ae374bb 100644 --- a/pt/learn/building_programs/project_make/index.html +++ b/pt/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/building_programs/runtime_libraries/index.html b/pt/learn/building_programs/runtime_libraries/index.html index 3cba734e645a..a50fa80ee19b 100644 --- a/pt/learn/building_programs/runtime_libraries/index.html +++ b/pt/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/index.html b/pt/learn/index.html index 8bad5f75dcef..2662ab297485 100644 --- a/pt/learn/index.html +++ b/pt/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/array/index.html b/pt/learn/intrinsics/array/index.html index 822c4873e9e0..273f43209ff4 100644 --- a/pt/learn/intrinsics/array/index.html +++ b/pt/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/bit/index.html b/pt/learn/intrinsics/bit/index.html index 710a29b723d8..206b003a9245 100644 --- a/pt/learn/intrinsics/bit/index.html +++ b/pt/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/cfi/index.html b/pt/learn/intrinsics/cfi/index.html index 0e79d53e9044..9259a2a70f51 100644 --- a/pt/learn/intrinsics/cfi/index.html +++ b/pt/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/character/index.html b/pt/learn/intrinsics/character/index.html index 107083ed518b..c22474caa898 100644 --- a/pt/learn/intrinsics/character/index.html +++ b/pt/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/compiler/index.html b/pt/learn/intrinsics/compiler/index.html index 74bd2e732b12..9298e6db0b65 100644 --- a/pt/learn/intrinsics/compiler/index.html +++ b/pt/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/index.html b/pt/learn/intrinsics/index.html index 244b5b5066a7..7a89094bc70d 100644 --- a/pt/learn/intrinsics/index.html +++ b/pt/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/math/index.html b/pt/learn/intrinsics/math/index.html index 1eda83f34391..18f110d0300e 100644 --- a/pt/learn/intrinsics/math/index.html +++ b/pt/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/model/index.html b/pt/learn/intrinsics/model/index.html index 96bb7c774810..bf6bbd69bf1c 100644 --- a/pt/learn/intrinsics/model/index.html +++ b/pt/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/numeric/index.html b/pt/learn/intrinsics/numeric/index.html index 807c99f70030..5567d3b5e021 100644 --- a/pt/learn/intrinsics/numeric/index.html +++ b/pt/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/parallel/index.html b/pt/learn/intrinsics/parallel/index.html index 018033144254..6f75d05241a1 100644 --- a/pt/learn/intrinsics/parallel/index.html +++ b/pt/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/state/index.html b/pt/learn/intrinsics/state/index.html index 574143cfad55..7b796e65b144 100644 --- a/pt/learn/intrinsics/state/index.html +++ b/pt/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/system/index.html b/pt/learn/intrinsics/system/index.html index 1cf7d111cac5..53b517331d94 100644 --- a/pt/learn/intrinsics/system/index.html +++ b/pt/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/transform/index.html b/pt/learn/intrinsics/transform/index.html index 015d0bca7891..b8c448bc9e6e 100644 --- a/pt/learn/intrinsics/transform/index.html +++ b/pt/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/intrinsics/type/index.html b/pt/learn/intrinsics/type/index.html index ef9c6c8c07f7..dc795542670b 100644 --- a/pt/learn/intrinsics/type/index.html +++ b/pt/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/choose_compiler/index.html b/pt/learn/os_setup/choose_compiler/index.html index 51985871b11d..17eb79e4470f 100644 --- a/pt/learn/os_setup/choose_compiler/index.html +++ b/pt/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/ides/index.html b/pt/learn/os_setup/ides/index.html index ae17564c7957..681e18fe5d29 100644 --- a/pt/learn/os_setup/ides/index.html +++ b/pt/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/index.html b/pt/learn/os_setup/index.html index bd1992bc21d6..48d1874b7188 100644 --- a/pt/learn/os_setup/index.html +++ b/pt/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/install_gfortran/index.html b/pt/learn/os_setup/install_gfortran/index.html index 2f3d7c7fa9d5..b986e5229b03 100644 --- a/pt/learn/os_setup/install_gfortran/index.html +++ b/pt/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/text_editors/index.html b/pt/learn/os_setup/text_editors/index.html index ca5ed48fe1b4..fe3851fc7d7e 100644 --- a/pt/learn/os_setup/text_editors/index.html +++ b/pt/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/os_setup/tips/index.html b/pt/learn/os_setup/tips/index.html index 265017e0c8e8..f3d6cdcbac81 100644 --- a/pt/learn/os_setup/tips/index.html +++ b/pt/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/arrays_strings/index.html b/pt/learn/quickstart/arrays_strings/index.html index d539bc8d9e89..8f013878a8b4 100644 --- a/pt/learn/quickstart/arrays_strings/index.html +++ b/pt/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/derived_types/index.html b/pt/learn/quickstart/derived_types/index.html index a042f2f1a631..5a0761e3f381 100644 --- a/pt/learn/quickstart/derived_types/index.html +++ b/pt/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/hello_world/index.html b/pt/learn/quickstart/hello_world/index.html index 8f60fd276a6e..a802af1ff1a2 100644 --- a/pt/learn/quickstart/hello_world/index.html +++ b/pt/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/index.html b/pt/learn/quickstart/index.html index a2f017f020d7..3a468a9e90a4 100644 --- a/pt/learn/quickstart/index.html +++ b/pt/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/operators_control_flow/index.html b/pt/learn/quickstart/operators_control_flow/index.html index f25b14cd89fe..600d5548d894 100644 --- a/pt/learn/quickstart/operators_control_flow/index.html +++ b/pt/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/organising_code/index.html b/pt/learn/quickstart/organising_code/index.html index 08e9c2986e3b..51e1ccdb94d0 100644 --- a/pt/learn/quickstart/organising_code/index.html +++ b/pt/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/learn/quickstart/variables/index.html b/pt/learn/quickstart/variables/index.html index 4280c5712953..55f57a822c56 100644 --- a/pt/learn/quickstart/variables/index.html +++ b/pt/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2020/02-28-J3-february-meeting/index.html b/pt/news/2020/02-28-J3-february-meeting/index.html index 0d1076593029..9573a98c3ccf 100644 --- a/pt/news/2020/02-28-J3-february-meeting/index.html +++ b/pt/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2020/04-06-Announcing-FortranCon-2020/index.html b/pt/news/2020/04-06-Announcing-FortranCon-2020/index.html index 6135792d0258..192d0ab56d4d 100644 --- a/pt/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/pt/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2020/04-18-Fortran-Webinar/index.html b/pt/news/2020/04-18-Fortran-Webinar/index.html index 399a6e2f0d52..19bc649d0fd5 100644 --- a/pt/news/2020/04-18-Fortran-Webinar/index.html +++ b/pt/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/pt/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 2ff8515d7803..88c8e98a18f6 100644 --- a/pt/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/pt/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/pt/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 6d6da8c5aad7..05c028bedbb1 100644 --- a/pt/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/pt/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/pt/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 97f8a7348656..bd87cbe60151 100644 --- a/pt/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/pt/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/pt/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/pt/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 1ff5d27c4e98..d60cec7a47a3 100644 --- a/pt/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/pt/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík diff --git a/pt/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/pt/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 6a4445526bd4..a91d9b4acfcd 100644 --- a/pt/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/pt/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,49 +415,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König diff --git a/pt/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/pt/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index 97e88c5c5738..7284d5937f9b 100644 --- a/pt/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/pt/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson diff --git a/pt/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/pt/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index d41b866bbe4a..7fb8d012996c 100644 --- a/pt/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/pt/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -454,7 +457,7 @@

- Laurence Kedward + Ivan Pribec , diff --git a/pt/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/pt/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index fb98c7b54c0e..1807d0d9e860 100644 --- a/pt/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/pt/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -433,14 +436,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík diff --git a/pt/news/2020/index.html b/pt/news/2020/index.html index d7f07ac04026..351002797ff6 100644 --- a/pt/news/2020/index.html +++ b/pt/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -533,14 +536,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -600,35 +603,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -642,7 +645,7 @@

- Laurence Kedward + Ivan Pribec , @@ -709,42 +712,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -804,49 +807,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -906,35 +909,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík @@ -1001,14 +1004,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -1068,21 +1071,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/pt/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 9a43c6404d64..d4a1f96742d8 100644 --- a/pt/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/pt/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -433,14 +436,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , diff --git a/pt/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/pt/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index b2c2ef393509..f6fb66fce301 100644 --- a/pt/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/pt/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/pt/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/pt/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index b147c31c0a80..323c84352554 100644 --- a/pt/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/pt/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík diff --git a/pt/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/pt/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 4a4cfdd94b16..6a5cc63cfd1a 100644 --- a/pt/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/pt/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward diff --git a/pt/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/pt/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index 16da37520c9e..553080bf6ae3 100644 --- a/pt/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/pt/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -433,7 +436,7 @@

- Laurence Kedward + Ondřej Čertík , diff --git a/pt/news/2021/04-20-First-Year/index.html b/pt/news/2021/04-20-First-Year/index.html index 70b621848d05..9e12d5c70014 100644 --- a/pt/news/2021/04-20-First-Year/index.html +++ b/pt/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík diff --git a/pt/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/pt/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 7de0810eb95d..c1f0e4e1d0ae 100644 --- a/pt/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/pt/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -433,7 +436,7 @@

- Laurence Kedward + Ondřej Čertík , diff --git a/pt/news/2021/05-18-Welcome-GSoC-students/index.html b/pt/news/2021/05-18-Welcome-GSoC-students/index.html index 99f5fcf5d32c..4a6dad4530fb 100644 --- a/pt/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/pt/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Arjen Markus + Laurence Kedward , @@ -440,14 +443,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus diff --git a/pt/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/pt/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 326b18dec87f..47aa9b29c1f8 100644 --- a/pt/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/pt/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík diff --git a/pt/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/pt/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 0e48a9faa73e..9d9a8c177203 100644 --- a/pt/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/pt/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , diff --git a/pt/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/pt/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index dc96f0cd808b..027e2c39c4b7 100644 --- a/pt/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/pt/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík diff --git a/pt/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/pt/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index c773fb35bb52..ee7f72d57f61 100644 --- a/pt/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/pt/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík diff --git a/pt/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/pt/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 51de3634b739..5777fbbeb660 100644 --- a/pt/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/pt/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -426,7 +429,7 @@

- Laurence Kedward + Ondřej Čertík diff --git a/pt/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/pt/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 221de024637b..00e96177f667 100644 --- a/pt/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/pt/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík diff --git a/pt/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/pt/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index a86d17fe9872..f82b7a576ec7 100644 --- a/pt/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/pt/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/pt/news/2021/12-29-Fortran-lang-2021-in-review/index.html index 39e3667382e9..fc883c4f2698 100644 --- a/pt/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/pt/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , diff --git a/pt/news/2021/index.html b/pt/news/2021/index.html index c124ef261690..7682e1900373 100644 --- a/pt/news/2021/index.html +++ b/pt/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -697,14 +700,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -764,7 +767,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -778,7 +781,7 @@

- Laurence Kedward + Ondřej Čertík @@ -852,14 +855,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -926,14 +929,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -993,28 +996,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1088,21 +1091,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1162,7 +1165,7 @@

- Arjen Markus + Laurence Kedward , @@ -1190,14 +1193,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1259,14 +1262,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1280,7 +1283,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1354,21 +1357,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1434,14 +1437,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1455,7 +1458,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1522,56 +1525,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -1638,14 +1641,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1705,28 +1708,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -1793,14 +1796,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1814,14 +1817,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , diff --git a/pt/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/pt/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 04affa1cb9b7..6639a3477e43 100644 --- a/pt/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/pt/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -433,7 +436,7 @@

- Jérémie Vandenplas + Ondřej Čertík , diff --git a/pt/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/pt/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index e8e6fb9cb051..d19f293c5fa7 100644 --- a/pt/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/pt/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/pt/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/pt/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 7d3e0c6fb58e..8bb3d90bb920 100644 --- a/pt/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/pt/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík diff --git a/pt/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/pt/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 736c637509de..26a54d614893 100644 --- a/pt/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/pt/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/pt/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 7eefc09e4d12..6574dcc9d132 100644 --- a/pt/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/pt/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -426,14 +429,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby diff --git a/pt/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/pt/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index 963d311714ee..fd9f1d7c555c 100644 --- a/pt/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/pt/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík diff --git a/pt/news/2022/index.html b/pt/news/2022/index.html index 670ab994aee9..792b9029ac87 100644 --- a/pt/news/2022/index.html +++ b/pt/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -748,14 +751,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -815,28 +818,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -903,14 +906,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -924,7 +927,7 @@

- Jérémie Vandenplas + Ondřej Čertík , diff --git a/pt/news/archive/index.html b/pt/news/archive/index.html index 91464b54e631..4371677906a0 100644 --- a/pt/news/archive/index.html +++ b/pt/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/atom.xml b/pt/news/atom.xml index 36e1d68a0abf..4c5250d57531 100644 --- a/pt/news/atom.xml +++ b/pt/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:15:47.520493+00:00 + 2023-05-22T09:21:48.284584+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Henil Panchal + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Giannis Nikiteas + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Alexis Perry-Holby + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -191,7 +191,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: November 2021 2021-11-01T00:00:00+00:00 - Alexis Perry-Holby + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2021 edition of the monthly Fortran newsletter. @@ -211,7 +211,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Alexis Perry-Holby + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -251,7 +251,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: August 2021 2021-08-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Sebastian Ehlert + Arjen Markus <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -355,7 +355,7 @@ Fortran news from the previous month.This month we’ve had several updates to t First year of the Fortran website 2021-04-20T00:00:00+00:00 - Brad Richardson + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Sebastian Ehlert + Marshall Ward <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran newsletter: March 2021 2021-03-01T00:00:00+00:00 - Laurence Kedward + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March 2021 edition of the monthly Fortran newsletter. @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Jérémie Vandenplas + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Jérémie Vandenplas + Brad Richardson <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Jérémie Vandenplas + Thomas König <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Arjen Markus and Gary Klimowicz + Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. @@ -589,7 +589,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: July 2020 2020-07-01T00:00:00+00:00 - Laurence Kedward + and Jérémie Vandenplas <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2020 edition of the monthly Fortran newsletter. @@ -609,7 +609,7 @@ and details Fortran news from the previous month.Work has continued on the Fortr Fortran newsletter: June 2020 2020-06-01T00:00:00+00:00 - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2020 edition of the monthly Fortran newsletter. diff --git a/pt/news/author/alexis-perry-holby/index.html b/pt/news/author/alexis-perry-holby/index.html index cb002e1e94bd..fa3dc0963777 100644 --- a/pt/news/author/alexis-perry-holby/index.html +++ b/pt/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -748,14 +751,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -815,28 +818,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -903,14 +906,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -924,7 +927,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -1080,14 +1083,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1147,7 +1150,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1161,7 +1164,7 @@

- Laurence Kedward + Ondřej Čertík @@ -1235,14 +1238,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1302,14 +1305,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1323,7 +1326,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1390,14 +1393,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1411,7 +1414,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1478,28 +1481,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/pt/news/author/and-jeremie-vandenplas/index.html b/pt/news/author/and-jeremie-vandenplas/index.html index c5c8cc0e146d..d3a7d9354f12 100644 --- a/pt/news/author/and-jeremie-vandenplas/index.html +++ b/pt/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/pt/news/author/and-laurence-kedward/index.html b/pt/news/author/and-laurence-kedward/index.html index dec886e8a56f..88b72315889d 100644 --- a/pt/news/author/and-laurence-kedward/index.html +++ b/pt/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -607,49 +610,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König diff --git a/pt/news/author/arjen-markus-and-gary-klimowicz/index.html b/pt/news/author/arjen-markus-and-gary-klimowicz/index.html index ec48d3ee5968..1e691d3484f1 100644 --- a/pt/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/pt/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík diff --git a/pt/news/author/arjen-markus/index.html b/pt/news/author/arjen-markus/index.html index 732784ef13a6..21fc9ec1664b 100644 --- a/pt/news/author/arjen-markus/index.html +++ b/pt/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Arjen Markus + Laurence Kedward , @@ -540,14 +543,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -609,56 +612,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward diff --git a/pt/news/author/brad-richardson/index.html b/pt/news/author/brad-richardson/index.html index 3502da7449e5..12901b024c80 100644 --- a/pt/news/author/brad-richardson/index.html +++ b/pt/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Arjen Markus + Laurence Kedward , @@ -540,14 +543,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -616,21 +619,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -696,56 +699,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -805,35 +808,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -847,7 +850,7 @@

- Laurence Kedward + Ivan Pribec , @@ -914,42 +917,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -1009,49 +1012,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -1111,21 +1114,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/news/author/damian-rouson/index.html b/pt/news/author/damian-rouson/index.html index fdcb6b0d3f09..fb1f49730d0b 100644 --- a/pt/news/author/damian-rouson/index.html +++ b/pt/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward diff --git a/pt/news/author/gagandeep-singh/index.html b/pt/news/author/gagandeep-singh/index.html index 23b1b861abc0..eaf392fda1e1 100644 --- a/pt/news/author/gagandeep-singh/index.html +++ b/pt/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -593,28 +596,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , diff --git a/pt/news/author/gary-klimowicz/index.html b/pt/news/author/gary-klimowicz/index.html index 469fee8b08cd..fbf744a47ec3 100644 --- a/pt/news/author/gary-klimowicz/index.html +++ b/pt/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -533,14 +536,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -608,14 +611,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -629,14 +632,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -696,35 +699,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -738,7 +741,7 @@

- Laurence Kedward + Ivan Pribec , @@ -805,42 +808,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -900,49 +903,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König diff --git a/pt/news/author/giannis-nikiteas/index.html b/pt/news/author/giannis-nikiteas/index.html index a05f1b99d36b..1fd1daac2d65 100644 --- a/pt/news/author/giannis-nikiteas/index.html +++ b/pt/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -526,14 +529,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby diff --git a/pt/news/author/henil-panchal/index.html b/pt/news/author/henil-panchal/index.html index 3aae2ca02173..f5b34b16c43c 100644 --- a/pt/news/author/henil-panchal/index.html +++ b/pt/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík diff --git a/pt/news/author/index.html b/pt/news/author/index.html index 88b3408d3464..edb2c28498e3 100644 --- a/pt/news/author/index.html +++ b/pt/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/author/ivan-pribec/index.html b/pt/news/author/ivan-pribec/index.html index d0a9eaba4988..4b0446275d4d 100644 --- a/pt/news/author/ivan-pribec/index.html +++ b/pt/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -554,7 +557,7 @@

- Laurence Kedward + Ivan Pribec , diff --git a/pt/news/author/jeremie-vandenplas/index.html b/pt/news/author/jeremie-vandenplas/index.html index 4b8573824d88..41d69a3ff276 100644 --- a/pt/news/author/jeremie-vandenplas/index.html +++ b/pt/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -600,14 +603,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -621,7 +624,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -689,28 +692,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -786,28 +789,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -874,14 +877,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -895,14 +898,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -970,14 +973,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -991,14 +994,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -1058,42 +1061,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -1153,49 +1156,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -1255,35 +1258,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík diff --git a/pt/news/author/laurence-kedward/index.html b/pt/news/author/laurence-kedward/index.html index e8bc40e9244e..64bcef3f05d9 100644 --- a/pt/news/author/laurence-kedward/index.html +++ b/pt/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -609,7 +612,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -623,7 +626,7 @@

- Laurence Kedward + Ondřej Čertík @@ -690,14 +693,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -757,28 +760,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -852,21 +855,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -926,7 +929,7 @@

- Arjen Markus + Laurence Kedward , @@ -954,14 +957,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1023,14 +1026,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1044,7 +1047,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1118,21 +1121,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1198,14 +1201,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1219,7 +1222,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1286,56 +1289,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -1402,14 +1405,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1469,28 +1472,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -1557,14 +1560,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1578,14 +1581,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1653,14 +1656,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1674,14 +1677,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -1741,35 +1744,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -1783,7 +1786,7 @@

- Laurence Kedward + Ivan Pribec , @@ -1850,35 +1853,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík @@ -1945,14 +1948,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/pt/news/author/marshall-ward/index.html b/pt/news/author/marshall-ward/index.html index 0646445d966f..9e320c092137 100644 --- a/pt/news/author/marshall-ward/index.html +++ b/pt/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward diff --git a/pt/news/author/milan-curcic-and-ondrej-certik/index.html b/pt/news/author/milan-curcic-and-ondrej-certik/index.html index fedcdcc19e40..dd546f201ac8 100644 --- a/pt/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/pt/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/news/author/milan-curcic/index.html b/pt/news/author/milan-curcic/index.html index be0593d729fb..e1b73e8d2440 100644 --- a/pt/news/author/milan-curcic/index.html +++ b/pt/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -748,14 +751,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -815,28 +818,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -903,14 +906,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -924,7 +927,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -992,28 +995,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1258,14 +1261,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1332,14 +1335,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1399,28 +1402,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1494,21 +1497,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1568,7 +1571,7 @@

- Arjen Markus + Laurence Kedward , @@ -1596,14 +1599,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1665,14 +1668,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1686,7 +1689,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1760,21 +1763,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1840,14 +1843,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1861,7 +1864,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1928,56 +1931,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -2044,14 +2047,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2111,28 +2114,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -2199,14 +2202,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2220,14 +2223,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -2295,14 +2298,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2316,14 +2319,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -2383,35 +2386,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -2425,7 +2428,7 @@

- Laurence Kedward + Ivan Pribec , @@ -2492,42 +2495,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -2587,49 +2590,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -2689,35 +2692,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík @@ -2784,14 +2787,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas diff --git a/pt/news/author/ondrej-certik-and-zach-jibben/index.html b/pt/news/author/ondrej-certik-and-zach-jibben/index.html index 3736c33c8948..fb3d624bca5f 100644 --- a/pt/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/pt/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/author/ondrej-certik/index.html b/pt/news/author/ondrej-certik/index.html index 823fd87dc53e..8000b771cbab 100644 --- a/pt/news/author/ondrej-certik/index.html +++ b/pt/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -600,14 +603,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -667,14 +670,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -688,7 +691,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -756,28 +759,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -867,14 +870,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -934,7 +937,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -948,7 +951,7 @@

- Laurence Kedward + Ondřej Čertík @@ -1022,14 +1025,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1096,14 +1099,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1163,28 +1166,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1258,21 +1261,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1332,7 +1335,7 @@

- Arjen Markus + Laurence Kedward , @@ -1360,14 +1363,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1429,14 +1432,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1450,7 +1453,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1524,21 +1527,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1604,14 +1607,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1625,7 +1628,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1692,56 +1695,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -1808,14 +1811,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1875,14 +1878,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1896,14 +1899,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1971,14 +1974,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1992,14 +1995,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -2059,35 +2062,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -2101,7 +2104,7 @@

- Laurence Kedward + Ivan Pribec , @@ -2168,42 +2171,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -2263,49 +2266,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -2365,35 +2368,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík diff --git a/pt/news/author/sebastian-ehlert/index.html b/pt/news/author/sebastian-ehlert/index.html index 6f1a1ee44623..e56ed02f555a 100644 --- a/pt/news/author/sebastian-ehlert/index.html +++ b/pt/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -600,14 +603,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -621,7 +624,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -689,28 +692,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -874,14 +877,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -955,14 +958,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1022,28 +1025,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1117,21 +1120,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1191,7 +1194,7 @@

- Arjen Markus + Laurence Kedward , @@ -1219,14 +1222,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1288,14 +1291,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1309,7 +1312,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1376,14 +1379,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1397,7 +1400,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1464,56 +1467,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -1573,28 +1576,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -1661,14 +1664,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -1682,14 +1685,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1757,35 +1760,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -1799,7 +1802,7 @@

- Laurence Kedward + Ivan Pribec , diff --git a/pt/news/author/thomas-konig/index.html b/pt/news/author/thomas-konig/index.html index 4cfc60f74b8c..736b43d441f7 100644 --- a/pt/news/author/thomas-konig/index.html +++ b/pt/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,49 +515,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König diff --git a/pt/news/author/zachary-moon/index.html b/pt/news/author/zachary-moon/index.html index f7de9572a9b8..8e1ef46a9531 100644 --- a/pt/news/author/zachary-moon/index.html +++ b/pt/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , diff --git a/pt/news/category/index.html b/pt/news/category/index.html index 1c10af5427d6..6b0a39156abc 100644 --- a/pt/news/category/index.html +++ b/pt/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/category/newsletter/index.html b/pt/news/category/newsletter/index.html index 00ba2bf165af..ad780ec02755 100644 --- a/pt/news/category/newsletter/index.html +++ b/pt/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -748,14 +751,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -815,28 +818,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -903,14 +906,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -924,7 +927,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -992,28 +995,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1244,7 +1247,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1258,7 +1261,7 @@

- Laurence Kedward + Ondřej Čertík @@ -1332,14 +1335,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1406,14 +1409,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1473,28 +1476,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1568,21 +1571,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1642,7 +1645,7 @@

- Arjen Markus + Laurence Kedward , @@ -1670,14 +1673,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1739,14 +1742,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1760,7 +1763,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1834,21 +1837,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1914,14 +1917,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1935,7 +1938,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2002,56 +2005,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -2118,14 +2121,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2185,28 +2188,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -2273,14 +2276,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2294,14 +2297,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -2369,14 +2372,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2390,14 +2393,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -2457,35 +2460,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -2499,7 +2502,7 @@

- Laurence Kedward + Ivan Pribec , @@ -2566,42 +2569,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -2661,49 +2664,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -2763,35 +2766,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík @@ -2858,14 +2861,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/news/drafts/index.html b/pt/news/drafts/index.html index 22685957d435..9765b209a774 100644 --- a/pt/news/drafts/index.html +++ b/pt/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/news/index.html b/pt/news/index.html index 7d79f317f201..f6dcf0e07a81 100644 --- a/pt/news/index.html +++ b/pt/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,21 +522,21 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Henil Panchal , - Henil Panchal + Ondřej Čertík @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Giannis Nikiteas , - Giannis Nikiteas + Alexis Perry-Holby @@ -748,14 +751,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -815,28 +818,28 @@

- Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Milan Curcic , - Alexis Perry-Holby + Gagandeep Singh , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -903,14 +906,14 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic , @@ -924,7 +927,7 @@

- Jérémie Vandenplas + Ondřej Čertík , @@ -992,28 +995,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -1177,14 +1180,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1244,7 +1247,7 @@

- Ondřej Čertík + Laurence Kedward , @@ -1258,7 +1261,7 @@

- Laurence Kedward + Ondřej Čertík @@ -1332,14 +1335,14 @@

- Ondřej Čertík + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík @@ -1406,14 +1409,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -1473,28 +1476,28 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Zachary Moon , - Zachary Moon + Milan Curcic , - Laurence Kedward + Ondřej Čertík , @@ -1568,21 +1571,21 @@

- Sebastian Ehlert + Laurence Kedward , - Ondřej Čertík + Sebastian Ehlert , - Laurence Kedward + Ondřej Čertík @@ -1642,7 +1645,7 @@

- Arjen Markus + Laurence Kedward , @@ -1670,14 +1673,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Arjen Markus @@ -1739,14 +1742,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1760,7 +1763,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -1834,21 +1837,21 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Brad Richardson , - Brad Richardson + Ondřej Čertík @@ -1914,14 +1917,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Milan Curcic , @@ -1935,7 +1938,7 @@

- Laurence Kedward + Ondřej Čertík , @@ -2002,56 +2005,56 @@

- Arjen Markus + Laurence Kedward , - Milan Curcic + Damian Rouson , - Ondřej Čertík + Milan Curcic , - Brad Richardson + Ondřej Čertík , - Damian Rouson + Brad Richardson , - Marshall Ward + Sebastian Ehlert , - Laurence Kedward + Arjen Markus , - Sebastian Ehlert + Marshall Ward @@ -2118,14 +2121,14 @@

- Ondřej Čertík + Laurence Kedward , - Laurence Kedward + Ondřej Čertík @@ -2185,28 +2188,28 @@

- Milan Curcic + Laurence Kedward , - Alexis Perry-Holby + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Alexis Perry-Holby , @@ -2273,14 +2276,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2294,14 +2297,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík , @@ -2369,14 +2372,14 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , @@ -2390,14 +2393,14 @@

- Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Ondřej Čertík @@ -2457,35 +2460,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + Milan Curcic , - Gary Klimowicz + Ondřej Čertík , - Ivan Pribec + Brad Richardson , @@ -2499,7 +2502,7 @@

- Laurence Kedward + Ivan Pribec , @@ -2566,42 +2569,42 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Jérémie Vandenplas + Brad Richardson @@ -2661,49 +2664,49 @@

- Milan Curcic + Jérémie Vandenplas , - Ondřej Čertík + Gary Klimowicz , - Brad Richardson + and Laurence Kedward , - Gary Klimowicz + Milan Curcic , - and Laurence Kedward + Ondřej Čertík , - Thomas König + Brad Richardson , - Jérémie Vandenplas + Thomas König @@ -2763,35 +2766,35 @@

- Milan Curcic + Laurence Kedward , - Ondřej Čertík + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz , - Arjen Markus and Gary Klimowicz + Ondřej Čertík @@ -2858,14 +2861,14 @@

- and Jérémie Vandenplas + Laurence Kedward , - Laurence Kedward + and Jérémie Vandenplas @@ -2925,21 +2928,21 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík diff --git a/pt/packages/data-types/index.html b/pt/packages/data-types/index.html index c37013d1a64a..c3c1d3c92c73 100644 --- a/pt/packages/data-types/index.html +++ b/pt/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/examples/index.html b/pt/packages/examples/index.html index 7b058768c880..ec7ccb111403 100644 --- a/pt/packages/examples/index.html +++ b/pt/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/graphics/index.html b/pt/packages/graphics/index.html index 751495e0493c..b2774ce2e9d8 100644 --- a/pt/packages/graphics/index.html +++ b/pt/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/index.html b/pt/packages/index.html index 206f6275c9d3..24465833e2f7 100644 --- a/pt/packages/index.html +++ b/pt/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/interfaces/index.html b/pt/packages/interfaces/index.html index a76ba2ece08d..25810f1062fc 100644 --- a/pt/packages/interfaces/index.html +++ b/pt/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/io/index.html b/pt/packages/io/index.html index ea1dcf314a23..4c0cd8855f1c 100644 --- a/pt/packages/io/index.html +++ b/pt/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/libraries/index.html b/pt/packages/libraries/index.html index d8a876b7dbf6..b8184002ea57 100644 --- a/pt/packages/libraries/index.html +++ b/pt/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/numerical/index.html b/pt/packages/numerical/index.html index 7e22972c687a..18cf39966f37 100644 --- a/pt/packages/numerical/index.html +++ b/pt/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/programming/index.html b/pt/packages/programming/index.html index 2ed6c4882fb1..b816eb0250d9 100644 --- a/pt/packages/programming/index.html +++ b/pt/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/scientific/index.html b/pt/packages/scientific/index.html index 1450c93f5489..6770fdf685f0 100644 --- a/pt/packages/scientific/index.html +++ b/pt/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/packages/strings/index.html b/pt/packages/strings/index.html index f0b6a3de482a..395aced5716f 100644 --- a/pt/packages/strings/index.html +++ b/pt/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/roadmap/index.html b/pt/roadmap/index.html index d2ea6ca7dcc6..733899d703e4 100644 --- a/pt/roadmap/index.html +++ b/pt/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/pt/search/index.html b/pt/search/index.html index a24ffc23e8e8..4a8ad0107fae 100644 --- a/pt/search/index.html +++ b/pt/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/roadmap/index.html b/roadmap/index.html new file mode 100644 index 000000000000..4427ebc74867 --- /dev/null +++ b/roadmap/index.html @@ -0,0 +1,654 @@ + + + + + + + + + Roadmap — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ + +
+ +
+ + +
+ + + + +
+ +
+ +
+

Roadmap #

+

This is a snapshot of the Fortran-Lang roadmap, which is a living document. +It is intended to give a general idea of the direction of the Organization, encourage developers to contribute to our projects and seek funding opportunities. +It is not intended to be a commitment to deliver specific features or to prevent Fortran-Lang from doing other things. +The roadmap is a living document, and it will be updated as needed.

+
+

Fortran Standard Library#

+
+

OS integration: File system#

+

Currently, file system operations such as listing contents of directories, traversing directories, and similar, +are restricted to 3rd party libraries and compiler extensions that are platform-specific and not portable. +This project will entail designing and implementing a cross-platform solution for file system operations.

+

Related issues:

+
    +
  • stdlib#201: File system operations

  • +
  • stdlib#220: API for file system operations, directory manipulation

  • +
+

WIP implementation:

+ +

Expected outcomes: Implemented an stdlib module that provides cross-platform file-system utilities

+
+
+

OS integration: Subprocesses#

+

Cross-platform solution to abstract POSIX and Windows API for creating subprocesses.

+

Related issues:

+ +

Discourse thread:

+ +
+
+

Sparse matrices#

+

Implementing a standardized API for procedures to handle (COO and CSR) sparse matrices. +Both non-OO low-level API and OO API should be implemented.

+

Related issue:

+ +

WIP implementation:

+ +

Expected outcomes: Implemented sparse matrix functionality in the stdlib_linalg module

+
+
+
+

Fortran Package Manager (fpm)#

+
+

Fortran Registry#

+

Fpm currently supports decentralized package dependencies whereby dependencies are specified without a central registry. +A long-term goal for Fortran-Lang is to host a community-supported registry of fpm packages and for fpm to support interfacing with this and other registries to simplify dependency management.

+

This project idea aims to accomplish a major step towards a central package registry by implementing support in fpm for a locally hosted package registry. +In particular, this project will entail:

+
    +
  • Defining the manifest syntax to use dependencies from a registry

  • +
  • Implementing support for looking up and loading a (local) registry

  • +
  • Allowing fpm to manage a local registry by fetching it from a remote registry

  • +
+

Related issues:

+
    +
  • fpm#321: Implement support for a local registry

  • +
  • fpm#35: Full package registry

  • +
+

See also:

+ +

Expected outcomes: Implemented a repository of fpm packages as a service

+
+
+

Version Constraint Resolution#

+

The current decentralized package system in fpm allows dependencies to be fetched via a git repository URL. As part of this, a git tag or commit can be given to require a specific version of a dependency. There is however no way of specifying version compatibility requirements (e.g. >= 1.0.0, <2.0.0) and no way to resolve such requirements across a dependency tree.

+

This project will involve:

+
    +
  • Defining a manifest syntax for version compatibility matching

  • +
  • Implementing support in fpm for solving a set of version compatibility constraints

  • +
+

A possible approach would be to interface with an existing satisfiability solver such as:

+
    +
  • libsolv: +interface via iso_c_binding as a separate fpm package

  • +
+

See also: existing options for version matching syntax:

+ +

Expected outcomes: Implemented a working version constraint mechanism in fpm

+
+
+

fpm-ize the Fortran ecosystem#

+

Research the Fortran library and application ecosystem (on GitHub and beyond) +and collaborate with package maintainers on making their package fpm-compatible.

+

Expected outcomes: Bring popular Fortran, C and C++ packages to the fpm ecosystem.

+
+
+

Extended Testing Support#

+

The aim of this project is to create a manifest specification to provide defaults to executable targets in fpm projects. +Information can be passed as environment variables, command-line arguments or as a runner. +Desired features include:

+
    +
  • Programs should have a way to find resources of which the relative position within the project source directory is known.

  • +
  • The current binary directory to access other targets within a project.

  • +
  • Default runners like mpirun/cafrun or scripts from test frameworks should be usable to launch programs.

  • +
  • A general syntax to define environment variables and command-line arguments should be defined.

  • +
+

Some features should be implemented directly in fpm, while more elaborated functionality could be implemented in a separate fpm package as an official Fortran-lang fpm package.

+

Related issues:

+ +

Related discussions:

+
    +
  • fpm#328: Example which requires external data

  • +
+

Expected outcomes: fpm has broader and deeper testing functionality

+
+
+

Source Code Distribution with Foreign Build Systems#

+

The aim of this project is to enable fpm to create source code distributions of itself that can be bootstrapped without fpm. +Desired features include:

+
    +
  • Allow fpm to generate source code distributions with non-fpm build systems.

  • +
  • Generated source code distribution should allow building fpm project without fpm, git or internet access.

  • +
  • Potential third-party build systems are CMake and Meson.

  • +
  • Allow easier distribution and packaging of fpm via various packaging ecosystems.

  • +
+

Related issues:

+
    +
  • fpm#69: Have CMake and Make backends

  • +
  • fpm#70: Have a Conda backend

  • +
+

Expected outcomes: fpm can generate source code distributions of packages that can be build using CMake and/or Meson.

+
+
+
+

Modern Fortran for Visual Studio Code#

+
+

Integration with the Fortran Package Manager and CMake#

+

The aim of this project is to integrate the Fortran Package Manager and CMake into the Modern Fortran Visual Studio Code extension. The integration should allow for building of a project with fpm or CMake through VS Code but also the +accurate configuration of the linter and the Language Server.

+

Related issues:

+ +

Related discussions:

+
    +
  • fpm#768: FPM integration discussion

  • +
+

Expected outcomes:

+
    +
  • fpm and CMake are integrated into the Modern Fortran Visual Studio Code extension.

  • +
  • User is able to build, run and debug fpm project.

  • +
  • The Modern Fortran extension is able to automatically configure the linter and the Language Server based on the fpm and CMake configurations.

  • +
  • Easy installation of fpm via pip.

  • +
+
+
+

Sphinx Documentation#

+

The aim of the project is to write the documentation webpage for Modern Fortran +using Sphinx and MyST Markdown. The documentation should include:

+
    +
  • Installation instructions

  • +
  • Available settings and how to set them

  • +
  • Frequently Asked Questions and their answers

  • +
+

Expected outcomes: Modern Fortran for Visual Studio Code extension has a documentation webpage.

+

Related issues:

+ +
+
+

Extension Localizations#

+

The aim of the project is to localize the Modern Fortran for Visual Studio Code extension into other languages. There is already extensive documentation on how to localize Visual Studio Code extensions, and we already have tools in place to help with the process, see for example fortran-lang.org.

+

Related issues:

+ +

Expected outcomes: Modern Fortran for Visual Studio Code extension is localized into other languages.

+
+
+
+ +
+ + +
+ +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/ru/.doctrees/compilers.doctree b/ru/.doctrees/compilers.doctree index 9bf7327b831e..e8f63fc187b4 100644 Binary files a/ru/.doctrees/compilers.doctree and b/ru/.doctrees/compilers.doctree differ diff --git a/ru/.doctrees/environment.pickle b/ru/.doctrees/environment.pickle index c460eb3c82d7..d2ffa6ccc474 100644 Binary files a/ru/.doctrees/environment.pickle and b/ru/.doctrees/environment.pickle differ diff --git a/ru/.doctrees/index.doctree b/ru/.doctrees/index.doctree index a7e0757d6801..86e88a0eb1b2 100644 Binary files a/ru/.doctrees/index.doctree and b/ru/.doctrees/index.doctree differ diff --git a/ru/.doctrees/learn.doctree b/ru/.doctrees/learn.doctree index 5af5c9651dba..773b915071ef 100644 Binary files a/ru/.doctrees/learn.doctree and b/ru/.doctrees/learn.doctree differ diff --git a/ru/.doctrees/learn/best_practices/allocatable_arrays.doctree b/ru/.doctrees/learn/best_practices/allocatable_arrays.doctree index 52fa5c8547e4..39ace98ad245 100644 Binary files a/ru/.doctrees/learn/best_practices/allocatable_arrays.doctree and b/ru/.doctrees/learn/best_practices/allocatable_arrays.doctree differ diff --git a/ru/.doctrees/learn/best_practices/arrays.doctree b/ru/.doctrees/learn/best_practices/arrays.doctree index 13b98d0969f7..2ccdf69a82b8 100644 Binary files a/ru/.doctrees/learn/best_practices/arrays.doctree and b/ru/.doctrees/learn/best_practices/arrays.doctree differ diff --git a/ru/.doctrees/learn/best_practices/callbacks.doctree b/ru/.doctrees/learn/best_practices/callbacks.doctree index eca259b77844..9928f06edca7 100644 Binary files a/ru/.doctrees/learn/best_practices/callbacks.doctree and b/ru/.doctrees/learn/best_practices/callbacks.doctree differ diff --git a/ru/.doctrees/learn/best_practices/element_operations.doctree b/ru/.doctrees/learn/best_practices/element_operations.doctree index ad57a59736ea..dabfe09fea7b 100644 Binary files a/ru/.doctrees/learn/best_practices/element_operations.doctree and b/ru/.doctrees/learn/best_practices/element_operations.doctree differ diff --git a/ru/.doctrees/learn/best_practices/file_io.doctree b/ru/.doctrees/learn/best_practices/file_io.doctree index 3f673277163a..73b7f983c56d 100644 Binary files a/ru/.doctrees/learn/best_practices/file_io.doctree and b/ru/.doctrees/learn/best_practices/file_io.doctree differ diff --git a/ru/.doctrees/learn/best_practices/floating_point.doctree b/ru/.doctrees/learn/best_practices/floating_point.doctree index d99641fa484e..817ed4de876f 100644 Binary files a/ru/.doctrees/learn/best_practices/floating_point.doctree and b/ru/.doctrees/learn/best_practices/floating_point.doctree differ diff --git a/ru/.doctrees/learn/best_practices/integer_division.doctree b/ru/.doctrees/learn/best_practices/integer_division.doctree index 67a3af8f1df1..776ae45b6aea 100644 Binary files a/ru/.doctrees/learn/best_practices/integer_division.doctree and b/ru/.doctrees/learn/best_practices/integer_division.doctree differ diff --git a/ru/.doctrees/learn/best_practices/modules_programs.doctree b/ru/.doctrees/learn/best_practices/modules_programs.doctree index fd46232ba07e..ac666a0ce232 100644 Binary files a/ru/.doctrees/learn/best_practices/modules_programs.doctree and b/ru/.doctrees/learn/best_practices/modules_programs.doctree differ diff --git a/ru/.doctrees/learn/best_practices/multidim_arrays.doctree b/ru/.doctrees/learn/best_practices/multidim_arrays.doctree index b0ea02c7472a..aa2339f038b2 100644 Binary files a/ru/.doctrees/learn/best_practices/multidim_arrays.doctree and b/ru/.doctrees/learn/best_practices/multidim_arrays.doctree differ diff --git a/ru/.doctrees/learn/best_practices/style_guide.doctree b/ru/.doctrees/learn/best_practices/style_guide.doctree index fd43f7d36b41..c9a50225e869 100644 Binary files a/ru/.doctrees/learn/best_practices/style_guide.doctree and b/ru/.doctrees/learn/best_practices/style_guide.doctree differ diff --git a/ru/.doctrees/learn/best_practices/type_casting.doctree b/ru/.doctrees/learn/best_practices/type_casting.doctree index 1821294e6045..817c3452d978 100644 Binary files a/ru/.doctrees/learn/best_practices/type_casting.doctree and b/ru/.doctrees/learn/best_practices/type_casting.doctree differ diff --git a/ru/.doctrees/learn/building_programs/build_tools.doctree b/ru/.doctrees/learn/building_programs/build_tools.doctree index 86b34cf1afba..bc0f5b9f8bfc 100644 Binary files a/ru/.doctrees/learn/building_programs/build_tools.doctree and b/ru/.doctrees/learn/building_programs/build_tools.doctree differ diff --git a/ru/.doctrees/learn/building_programs/compiling_source.doctree b/ru/.doctrees/learn/building_programs/compiling_source.doctree index 15417984c11f..0b31870ece16 100644 Binary files a/ru/.doctrees/learn/building_programs/compiling_source.doctree and b/ru/.doctrees/learn/building_programs/compiling_source.doctree differ diff --git a/ru/.doctrees/learn/building_programs/distributing.doctree b/ru/.doctrees/learn/building_programs/distributing.doctree index a63a4ea53772..35ffead297a3 100644 Binary files a/ru/.doctrees/learn/building_programs/distributing.doctree and b/ru/.doctrees/learn/building_programs/distributing.doctree differ diff --git a/ru/.doctrees/learn/building_programs/include_files.doctree b/ru/.doctrees/learn/building_programs/include_files.doctree index 9719bc23032b..1b721497d0e7 100644 Binary files a/ru/.doctrees/learn/building_programs/include_files.doctree and b/ru/.doctrees/learn/building_programs/include_files.doctree differ diff --git a/ru/.doctrees/learn/building_programs/linking_pieces.doctree b/ru/.doctrees/learn/building_programs/linking_pieces.doctree index 41024511e7f3..2f2dfc70788d 100644 Binary files a/ru/.doctrees/learn/building_programs/linking_pieces.doctree and b/ru/.doctrees/learn/building_programs/linking_pieces.doctree differ diff --git a/ru/.doctrees/learn/building_programs/managing_libraries.doctree b/ru/.doctrees/learn/building_programs/managing_libraries.doctree index 574540fa5ec9..1d249028bc52 100644 Binary files a/ru/.doctrees/learn/building_programs/managing_libraries.doctree and b/ru/.doctrees/learn/building_programs/managing_libraries.doctree differ diff --git a/ru/.doctrees/learn/building_programs/project_make.doctree b/ru/.doctrees/learn/building_programs/project_make.doctree index 5b8f0e839ed4..6bb90db240bf 100644 Binary files a/ru/.doctrees/learn/building_programs/project_make.doctree and b/ru/.doctrees/learn/building_programs/project_make.doctree differ diff --git a/ru/.doctrees/learn/building_programs/runtime_libraries.doctree b/ru/.doctrees/learn/building_programs/runtime_libraries.doctree index f4921f3fb86b..c9d2ad09975f 100644 Binary files a/ru/.doctrees/learn/building_programs/runtime_libraries.doctree and b/ru/.doctrees/learn/building_programs/runtime_libraries.doctree differ diff --git a/ru/.doctrees/learn/os_setup/choose_compiler.doctree b/ru/.doctrees/learn/os_setup/choose_compiler.doctree index ca00ef9b7dd4..e606a7c4abce 100644 Binary files a/ru/.doctrees/learn/os_setup/choose_compiler.doctree and b/ru/.doctrees/learn/os_setup/choose_compiler.doctree differ diff --git a/ru/.doctrees/learn/os_setup/ides.doctree b/ru/.doctrees/learn/os_setup/ides.doctree index 1e41450c20ff..c8ef75b17481 100644 Binary files a/ru/.doctrees/learn/os_setup/ides.doctree and b/ru/.doctrees/learn/os_setup/ides.doctree differ diff --git a/ru/.doctrees/learn/os_setup/index.doctree b/ru/.doctrees/learn/os_setup/index.doctree index 642de002a15c..f1bbe512bc4b 100644 Binary files a/ru/.doctrees/learn/os_setup/index.doctree and b/ru/.doctrees/learn/os_setup/index.doctree differ diff --git a/ru/.doctrees/learn/os_setup/install_gfortran.doctree b/ru/.doctrees/learn/os_setup/install_gfortran.doctree index 178438e4c9b8..bd3bb435dd4d 100644 Binary files a/ru/.doctrees/learn/os_setup/install_gfortran.doctree and b/ru/.doctrees/learn/os_setup/install_gfortran.doctree differ diff --git a/ru/.doctrees/learn/os_setup/text_editors.doctree b/ru/.doctrees/learn/os_setup/text_editors.doctree index b9788971ce7d..654d00071bf0 100644 Binary files a/ru/.doctrees/learn/os_setup/text_editors.doctree and b/ru/.doctrees/learn/os_setup/text_editors.doctree differ diff --git a/ru/.doctrees/learn/os_setup/tips.doctree b/ru/.doctrees/learn/os_setup/tips.doctree index 856fe994add4..1826cc349d82 100644 Binary files a/ru/.doctrees/learn/os_setup/tips.doctree and b/ru/.doctrees/learn/os_setup/tips.doctree differ diff --git a/ru/.doctrees/learn/quickstart/arrays_strings.doctree b/ru/.doctrees/learn/quickstart/arrays_strings.doctree index c36e3f07d500..a0926dbf699f 100644 Binary files a/ru/.doctrees/learn/quickstart/arrays_strings.doctree and b/ru/.doctrees/learn/quickstart/arrays_strings.doctree differ diff --git a/ru/.doctrees/learn/quickstart/derived_types.doctree b/ru/.doctrees/learn/quickstart/derived_types.doctree index a0795cad5297..fb63107b0f4f 100644 Binary files a/ru/.doctrees/learn/quickstart/derived_types.doctree and b/ru/.doctrees/learn/quickstart/derived_types.doctree differ diff --git a/ru/.doctrees/learn/quickstart/hello_world.doctree b/ru/.doctrees/learn/quickstart/hello_world.doctree index ebc0a30fd030..bcc4902716d7 100644 Binary files a/ru/.doctrees/learn/quickstart/hello_world.doctree and b/ru/.doctrees/learn/quickstart/hello_world.doctree differ diff --git a/ru/.doctrees/learn/quickstart/operators_control_flow.doctree b/ru/.doctrees/learn/quickstart/operators_control_flow.doctree index 374852e5fd7d..80c9bdd13f19 100644 Binary files a/ru/.doctrees/learn/quickstart/operators_control_flow.doctree and b/ru/.doctrees/learn/quickstart/operators_control_flow.doctree differ diff --git a/ru/.doctrees/learn/quickstart/organising_code.doctree b/ru/.doctrees/learn/quickstart/organising_code.doctree index e2ab72312758..cc161d34e4bf 100644 Binary files a/ru/.doctrees/learn/quickstart/organising_code.doctree and b/ru/.doctrees/learn/quickstart/organising_code.doctree differ diff --git a/ru/.doctrees/learn/quickstart/variables.doctree b/ru/.doctrees/learn/quickstart/variables.doctree index 97215890283c..329903762658 100644 Binary files a/ru/.doctrees/learn/quickstart/variables.doctree and b/ru/.doctrees/learn/quickstart/variables.doctree differ diff --git a/ru/community/contributing/index.html b/ru/community/contributing/index.html index ff41338b7327..1fc5a4c3a647 100644 --- a/ru/community/contributing/index.html +++ b/ru/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/community/history/index.html b/ru/community/history/index.html index 385902055e05..a3c98d6a4b64 100644 --- a/ru/community/history/index.html +++ b/ru/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/community/index.html b/ru/community/index.html index 67f7c98fca24..26239d3dfc38 100644 --- a/ru/community/index.html +++ b/ru/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/community/minibooks/index.html b/ru/community/minibooks/index.html index a8a20996d747..45826ff35d22 100644 --- a/ru/community/minibooks/index.html +++ b/ru/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/community/packages/index.html b/ru/community/packages/index.html index 9347b0df087e..23ae24f8c143 100644 --- a/ru/community/packages/index.html +++ b/ru/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/compilers/index.html b/ru/compilers/index.html index c80651a8d25e..d3058cdd4409 100644 --- a/ru/compilers/index.html +++ b/ru/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/genindex/index.html b/ru/genindex/index.html index 113cb7442a44..542470e41ebc 100644 --- a/ru/genindex/index.html +++ b/ru/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/index.html b/ru/index.html index 14d336981a03..e23e6248d01a 100644 --- a/ru/index.html +++ b/ru/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/allocatable_arrays/index.html b/ru/learn/best_practices/allocatable_arrays/index.html index 3e83cd93df81..19587157d177 100644 --- a/ru/learn/best_practices/allocatable_arrays/index.html +++ b/ru/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/arrays/index.html b/ru/learn/best_practices/arrays/index.html index 478f9a5eaeb4..cf8848b1546c 100644 --- a/ru/learn/best_practices/arrays/index.html +++ b/ru/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/callbacks/index.html b/ru/learn/best_practices/callbacks/index.html index 38bd6d766bed..f1dba27f8376 100644 --- a/ru/learn/best_practices/callbacks/index.html +++ b/ru/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/element_operations/index.html b/ru/learn/best_practices/element_operations/index.html index c5663bb09ce6..49caee3eab4a 100644 --- a/ru/learn/best_practices/element_operations/index.html +++ b/ru/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/file_io/index.html b/ru/learn/best_practices/file_io/index.html index af8c32111157..e875fc68ffec 100644 --- a/ru/learn/best_practices/file_io/index.html +++ b/ru/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/floating_point/index.html b/ru/learn/best_practices/floating_point/index.html index adf39a93ddd1..430cc13a9292 100644 --- a/ru/learn/best_practices/floating_point/index.html +++ b/ru/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/index.html b/ru/learn/best_practices/index.html index f67fddd43ac6..69ba76e4ec13 100644 --- a/ru/learn/best_practices/index.html +++ b/ru/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/integer_division/index.html b/ru/learn/best_practices/integer_division/index.html index 4244d37b8bdb..3bd5d91af6bb 100644 --- a/ru/learn/best_practices/integer_division/index.html +++ b/ru/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/modules_programs/index.html b/ru/learn/best_practices/modules_programs/index.html index 0c1b05cdf6a6..344f5efdab16 100644 --- a/ru/learn/best_practices/modules_programs/index.html +++ b/ru/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/multidim_arrays/index.html b/ru/learn/best_practices/multidim_arrays/index.html index 63acd7fd4cc2..9647b25f7887 100644 --- a/ru/learn/best_practices/multidim_arrays/index.html +++ b/ru/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/style_guide/index.html b/ru/learn/best_practices/style_guide/index.html index 96c2bdb73a10..55df27fd2f0b 100644 --- a/ru/learn/best_practices/style_guide/index.html +++ b/ru/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/best_practices/type_casting/index.html b/ru/learn/best_practices/type_casting/index.html index f943b619fbc6..5778d0d31e5e 100644 --- a/ru/learn/best_practices/type_casting/index.html +++ b/ru/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/build_tools/index.html b/ru/learn/building_programs/build_tools/index.html index ff06b59d5786..798b92882beb 100644 --- a/ru/learn/building_programs/build_tools/index.html +++ b/ru/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/compiling_source/index.html b/ru/learn/building_programs/compiling_source/index.html index 891a66f3223f..99a10c74ded1 100644 --- a/ru/learn/building_programs/compiling_source/index.html +++ b/ru/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/distributing/index.html b/ru/learn/building_programs/distributing/index.html index cbc8e330ad71..b5534091ea0c 100644 --- a/ru/learn/building_programs/distributing/index.html +++ b/ru/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/include_files/index.html b/ru/learn/building_programs/include_files/index.html index bbd60780b6ba..468eb98ae97a 100644 --- a/ru/learn/building_programs/include_files/index.html +++ b/ru/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/index.html b/ru/learn/building_programs/index.html index 4a6a251aebd1..4ca3d0e94894 100644 --- a/ru/learn/building_programs/index.html +++ b/ru/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/linking_pieces/index.html b/ru/learn/building_programs/linking_pieces/index.html index 8fc88c1246b4..ea355a39c879 100644 --- a/ru/learn/building_programs/linking_pieces/index.html +++ b/ru/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/managing_libraries/index.html b/ru/learn/building_programs/managing_libraries/index.html index 93cbdeb18529..11b091a65ca1 100644 --- a/ru/learn/building_programs/managing_libraries/index.html +++ b/ru/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/project_make/index.html b/ru/learn/building_programs/project_make/index.html index cf800ad68da0..59c4560ce3b0 100644 --- a/ru/learn/building_programs/project_make/index.html +++ b/ru/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/building_programs/runtime_libraries/index.html b/ru/learn/building_programs/runtime_libraries/index.html index 4184faea352c..1d1bd9f4ec7d 100644 --- a/ru/learn/building_programs/runtime_libraries/index.html +++ b/ru/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/index.html b/ru/learn/index.html index 7df7360711c1..6c4947a2cd13 100644 --- a/ru/learn/index.html +++ b/ru/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/array/index.html b/ru/learn/intrinsics/array/index.html index 81edf3e82fc5..cd5795a6bb36 100644 --- a/ru/learn/intrinsics/array/index.html +++ b/ru/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/bit/index.html b/ru/learn/intrinsics/bit/index.html index 02f544b3f0e4..941ddfbc90de 100644 --- a/ru/learn/intrinsics/bit/index.html +++ b/ru/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/cfi/index.html b/ru/learn/intrinsics/cfi/index.html index 5b70d03acec3..9f54eee56899 100644 --- a/ru/learn/intrinsics/cfi/index.html +++ b/ru/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/character/index.html b/ru/learn/intrinsics/character/index.html index c6b97792c4fc..9ce2f7e70de3 100644 --- a/ru/learn/intrinsics/character/index.html +++ b/ru/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/compiler/index.html b/ru/learn/intrinsics/compiler/index.html index 6c45c5fce090..7fd7d530bcfa 100644 --- a/ru/learn/intrinsics/compiler/index.html +++ b/ru/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/index.html b/ru/learn/intrinsics/index.html index b63f48569c29..7ae2502e6c51 100644 --- a/ru/learn/intrinsics/index.html +++ b/ru/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/math/index.html b/ru/learn/intrinsics/math/index.html index a30c10ce2507..c4953a5c35f7 100644 --- a/ru/learn/intrinsics/math/index.html +++ b/ru/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/model/index.html b/ru/learn/intrinsics/model/index.html index 3de7c8e330b9..afbd5f78a61b 100644 --- a/ru/learn/intrinsics/model/index.html +++ b/ru/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/numeric/index.html b/ru/learn/intrinsics/numeric/index.html index 6085d78e2d96..e49190cf4f3f 100644 --- a/ru/learn/intrinsics/numeric/index.html +++ b/ru/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/parallel/index.html b/ru/learn/intrinsics/parallel/index.html index 983a530291fe..67eae6896e0c 100644 --- a/ru/learn/intrinsics/parallel/index.html +++ b/ru/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/state/index.html b/ru/learn/intrinsics/state/index.html index 214aabfc8be4..5d24986a2ee5 100644 --- a/ru/learn/intrinsics/state/index.html +++ b/ru/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/system/index.html b/ru/learn/intrinsics/system/index.html index 6d33e7766e1a..35d7a0ec6015 100644 --- a/ru/learn/intrinsics/system/index.html +++ b/ru/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/transform/index.html b/ru/learn/intrinsics/transform/index.html index c089337bdac0..285432ab45d4 100644 --- a/ru/learn/intrinsics/transform/index.html +++ b/ru/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/intrinsics/type/index.html b/ru/learn/intrinsics/type/index.html index 935d8607968f..4b1e8a371e65 100644 --- a/ru/learn/intrinsics/type/index.html +++ b/ru/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/choose_compiler/index.html b/ru/learn/os_setup/choose_compiler/index.html index 0e0aa3d0fca9..34f9a71ebe6d 100644 --- a/ru/learn/os_setup/choose_compiler/index.html +++ b/ru/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/ides/index.html b/ru/learn/os_setup/ides/index.html index f5aa0f584218..edc7ae116c7b 100644 --- a/ru/learn/os_setup/ides/index.html +++ b/ru/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/index.html b/ru/learn/os_setup/index.html index b10e51222bee..4f7193d77271 100644 --- a/ru/learn/os_setup/index.html +++ b/ru/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/install_gfortran/index.html b/ru/learn/os_setup/install_gfortran/index.html index 05bf82dc52c7..3ca656dc28e7 100644 --- a/ru/learn/os_setup/install_gfortran/index.html +++ b/ru/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/text_editors/index.html b/ru/learn/os_setup/text_editors/index.html index 9a45a19b67bb..3eea0e59bf6f 100644 --- a/ru/learn/os_setup/text_editors/index.html +++ b/ru/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/os_setup/tips/index.html b/ru/learn/os_setup/tips/index.html index 2487cb33acdc..c9cfabc88282 100644 --- a/ru/learn/os_setup/tips/index.html +++ b/ru/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/arrays_strings/index.html b/ru/learn/quickstart/arrays_strings/index.html index 46200b54bb2f..1d36c9452e4a 100644 --- a/ru/learn/quickstart/arrays_strings/index.html +++ b/ru/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/derived_types/index.html b/ru/learn/quickstart/derived_types/index.html index 792aa249e33d..b587b8099162 100644 --- a/ru/learn/quickstart/derived_types/index.html +++ b/ru/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/hello_world/index.html b/ru/learn/quickstart/hello_world/index.html index 55f89976b085..cb086f57eb88 100644 --- a/ru/learn/quickstart/hello_world/index.html +++ b/ru/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/index.html b/ru/learn/quickstart/index.html index 2ed904da5c4b..6f21c0e1a48a 100644 --- a/ru/learn/quickstart/index.html +++ b/ru/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/operators_control_flow/index.html b/ru/learn/quickstart/operators_control_flow/index.html index 4c9451e94c93..18ab80e74930 100644 --- a/ru/learn/quickstart/operators_control_flow/index.html +++ b/ru/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/organising_code/index.html b/ru/learn/quickstart/organising_code/index.html index 263e67ddf6cb..dcdf2d257b2b 100644 --- a/ru/learn/quickstart/organising_code/index.html +++ b/ru/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/learn/quickstart/variables/index.html b/ru/learn/quickstart/variables/index.html index 10667e2c3784..3deb4893d5a6 100644 --- a/ru/learn/quickstart/variables/index.html +++ b/ru/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/2020/02-28-J3-february-meeting/index.html b/ru/news/2020/02-28-J3-february-meeting/index.html index 315a7edf8e64..c3325e7b5f05 100644 --- a/ru/news/2020/02-28-J3-february-meeting/index.html +++ b/ru/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/2020/04-06-Announcing-FortranCon-2020/index.html b/ru/news/2020/04-06-Announcing-FortranCon-2020/index.html index 8e073fead646..7d63d56a70f2 100644 --- a/ru/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/ru/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/2020/04-18-Fortran-Webinar/index.html b/ru/news/2020/04-18-Fortran-Webinar/index.html index 9f56b95defc0..c7304858942a 100644 --- a/ru/news/2020/04-18-Fortran-Webinar/index.html +++ b/ru/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/ru/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index c5c81f071ffa..74e9e0ed6eba 100644 --- a/ru/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/ru/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/ru/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index 27e6fb8b0234..71ac7a375e95 100644 --- a/ru/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/ru/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/ru/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 801781674d82..25366ee84a5f 100644 --- a/ru/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/ru/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/ru/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/ru/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index 813b636e6214..0df68df70aee 100644 --- a/ru/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/ru/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -440,7 +443,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/ru/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/ru/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 479b9c3bd5e9..275b58849f19 100644 --- a/ru/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/ru/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,49 +415,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic diff --git a/ru/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/ru/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index c7abdf4c4668..585cf4a35f8d 100644 --- a/ru/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/ru/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Brad Richardson , @@ -426,28 +429,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic diff --git a/ru/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/ru/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index 3aba159825fa..b8c2cf04257c 100644 --- a/ru/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/ru/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Brad Richardson , @@ -426,7 +429,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -440,28 +443,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert diff --git a/ru/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/ru/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index a253e4764036..fd5717bd2b97 100644 --- a/ru/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/ru/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -440,7 +443,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/ru/news/2020/index.html b/ru/news/2020/index.html index eb44b8cb5504..f4c1aa41dc1f 100644 --- a/ru/news/2020/index.html +++ b/ru/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -540,7 +543,7 @@

- Ondřej Čertík + Milan Curcic @@ -600,7 +603,7 @@

- Milan Curcic + Brad Richardson , @@ -614,7 +617,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -628,28 +631,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -709,7 +712,7 @@

- Milan Curcic + Brad Richardson , @@ -723,28 +726,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -804,49 +807,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -906,14 +909,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -934,7 +937,7 @@

- Ondřej Čertík + Milan Curcic @@ -994,14 +997,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -1068,14 +1071,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/ru/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 04a8139d4e52..be0517993156 100644 --- a/ru/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/ru/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -440,14 +443,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/ru/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index 6042ecea0488..5bc0f959e9ec 100644 --- a/ru/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/ru/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Laurence Kedward , @@ -426,14 +429,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , diff --git a/ru/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/ru/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 839f9f20a254..2f5039665e66 100644 --- a/ru/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/ru/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/ru/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/ru/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index d816cf9461c2..431f8ef09fb2 100644 --- a/ru/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/ru/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/ru/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index afad61c2c73d..c5e4589c8a75 100644 --- a/ru/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/ru/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Laurence Kedward , @@ -426,21 +429,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/04-20-First-Year/index.html b/ru/news/2021/04-20-First-Year/index.html index 35c625230e2a..fe3235341bc0 100644 --- a/ru/news/2021/04-20-First-Year/index.html +++ b/ru/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/ru/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/ru/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 72588aa6d74b..9c3ae2696fa2 100644 --- a/ru/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/ru/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Laurence Kedward , @@ -426,21 +429,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/05-18-Welcome-GSoC-students/index.html b/ru/news/2021/05-18-Welcome-GSoC-students/index.html index ac124d1cbd6e..e75072cd8dfb 100644 --- a/ru/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/ru/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Brad Richardson , @@ -433,21 +436,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/ru/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index 1bcc1a6643a8..cf34551ccde8 100644 --- a/ru/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/ru/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/ru/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/ru/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 8eadf8712e11..14fdaee77247 100644 --- a/ru/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/ru/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/ru/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index 1d56bdc9c9d3..7e06e693ad55 100644 --- a/ru/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/ru/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/ru/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/ru/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 5c9cdfe869d3..d24fbdf33272 100644 --- a/ru/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/ru/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,21 +422,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert diff --git a/ru/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/ru/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 4669cc5483f6..ddb6db408cfd 100644 --- a/ru/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/ru/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , diff --git a/ru/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/ru/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index 54e344df6a43..3cb907c0a864 100644 --- a/ru/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/ru/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , diff --git a/ru/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/ru/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index 6548ddbc6cde..6e66293ef22d 100644 --- a/ru/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/ru/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert diff --git a/ru/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/ru/news/2021/12-29-Fortran-lang-2021-in-review/index.html index fa180bee1b41..52216f48ed1c 100644 --- a/ru/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/ru/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -433,14 +436,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2021/index.html b/ru/news/2021/index.html index 114302912443..a362ad2b710f 100644 --- a/ru/news/2021/index.html +++ b/ru/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -533,14 +536,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -609,21 +612,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -683,21 +686,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -764,14 +767,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -845,21 +848,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -919,14 +922,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -993,35 +996,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1081,14 +1084,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1162,7 +1165,7 @@

- Milan Curcic + Brad Richardson , @@ -1183,21 +1186,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1259,7 +1262,7 @@

- Milan Curcic + Laurence Kedward , @@ -1273,21 +1276,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1354,14 +1357,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1434,7 +1437,7 @@

- Milan Curcic + Laurence Kedward , @@ -1448,21 +1451,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1522,56 +1525,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1631,14 +1634,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1705,7 +1708,7 @@

- Milan Curcic + Laurence Kedward , @@ -1719,14 +1722,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -1793,21 +1796,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1821,14 +1824,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/ru/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index ff4bd579a170..ab5fe542896b 100644 --- a/ru/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/ru/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -433,14 +436,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/ru/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index 1eb1f7ed9461..51e83e044cd8 100644 --- a/ru/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/ru/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,7 +415,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -426,14 +429,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , diff --git a/ru/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/ru/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 58213c556ddd..d8dd69a690ab 100644 --- a/ru/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/ru/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ru/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/ru/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index b2d3164bf416..8c3ea781a146 100644 --- a/ru/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/ru/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic diff --git a/ru/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/ru/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 42fa1b599282..7e4547cb34a7 100644 --- a/ru/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/ru/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -433,7 +436,7 @@

- Alexis Perry-Holby + Gagandeep Singh diff --git a/ru/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/ru/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index 62c02f394c2e..b858d7d40ca4 100644 --- a/ru/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/ru/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic diff --git a/ru/news/2022/index.html b/ru/news/2022/index.html index e81133c5a671..e8df0657039a 100644 --- a/ru/news/2022/index.html +++ b/ru/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -614,7 +617,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,7 +818,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -829,14 +832,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -903,14 +906,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -924,14 +927,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/archive/index.html b/ru/news/archive/index.html index 1c9784c8a591..7bec6e9fc072 100644 --- a/ru/news/archive/index.html +++ b/ru/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/atom.xml b/ru/news/atom.xml index b3b5446e5d98..16e6aef99c8d 100644 --- a/ru/news/atom.xml +++ b/ru/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:16:41.342059+00:00 + 2023-05-22T09:22:49.199724+00:00 ABlog @@ -11,7 +11,7 @@ Fortran newsletter: June 2022 2022-06-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June edition of the monthly Fortran newsletter. @@ -31,7 +31,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: May 2022 2022-05-05T00:00:00+00:00 - Alexis Perry-Holby + Gagandeep Singh <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May edition of the monthly Fortran newsletter. @@ -51,7 +51,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: April 2022 2022-04-07T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April edition of the monthly Fortran newsletter. @@ -71,7 +71,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: March 2022 2022-03-09T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the March edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -171,7 +171,7 @@ from flagship and new projects to community development and outreach. Fortran newsletter: December 2021 2021-12-01T00:00:00+00:00 - Alexis Perry-Holby + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2021 edition of the monthly Fortran newsletter. @@ -231,7 +231,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: September 2021 2021-09-01T00:00:00+00:00 - Alexis Perry-Holby + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.This month we’ve had several updates to t Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -467,7 +467,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: January 2021 2021-01-01T00:00:00+00:00 - Ondřej Čertík + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Happy New Year! @@ -489,7 +489,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: December 2020 2020-12-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the December 2020 edition of the monthly Fortran newsletter. @@ -509,7 +509,7 @@ Fortran news from the previous month.This month we’ve had a few updates to the Fortran newsletter: November 2020 2020-11-01T00:00:00+00:00 - Jeremie Vandenplas + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Welcome to the November 2020 edition of the monthly Fortran newsletter. @@ -529,7 +529,7 @@ Fortran news from the previous month.This month we’ve had a few additions and Fortran newsletter: October 2020 2020-10-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2020 edition of the monthly Fortran newsletter. @@ -549,7 +549,7 @@ and details Fortran news from the previous month.This month we’ve had only one Fortran newsletter: September 2020 2020-09-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the September 2020 edition of the monthly Fortran newsletter. @@ -569,7 +569,7 @@ and details Fortran news from the previous month.We continued the work on the Fo Fortran newsletter: August 2020 2020-08-01T00:00:00+00:00 - Ondřej Čertík + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the August 2020 edition of the monthly Fortran newsletter. diff --git a/ru/news/author/alexis-perry-holby/index.html b/ru/news/author/alexis-perry-holby/index.html index 4ee62cc4e030..dc0f3bcc293a 100644 --- a/ru/news/author/alexis-perry-holby/index.html +++ b/ru/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -614,7 +617,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,7 +818,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -829,14 +832,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -903,14 +906,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -924,14 +927,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -992,21 +995,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1066,21 +1069,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -1147,14 +1150,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1228,21 +1231,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1302,7 +1305,7 @@

- Milan Curcic + Laurence Kedward , @@ -1316,21 +1319,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1390,7 +1393,7 @@

- Milan Curcic + Laurence Kedward , @@ -1404,21 +1407,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1478,7 +1481,7 @@

- Milan Curcic + Laurence Kedward , @@ -1492,14 +1495,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , diff --git a/ru/news/author/and-jeremie-vandenplas/index.html b/ru/news/author/and-jeremie-vandenplas/index.html index 2cfc2c2bf948..3b1ada6c1dd1 100644 --- a/ru/news/author/and-jeremie-vandenplas/index.html +++ b/ru/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/ru/news/author/and-laurence-kedward/index.html b/ru/news/author/and-laurence-kedward/index.html index c0518d3fbe7f..f37a3cac1155 100644 --- a/ru/news/author/and-laurence-kedward/index.html +++ b/ru/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Brad Richardson , @@ -526,28 +529,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -607,49 +610,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/arjen-markus-and-gary-klimowicz/index.html b/ru/news/author/arjen-markus-and-gary-klimowicz/index.html index fedf01f10d81..25635e797c4a 100644 --- a/ru/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/ru/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -540,7 +543,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/arjen-markus/index.html b/ru/news/author/arjen-markus/index.html index 5b2ed5715e6d..905617ecaf48 100644 --- a/ru/news/author/arjen-markus/index.html +++ b/ru/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Brad Richardson , @@ -533,21 +536,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -609,56 +612,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/author/brad-richardson/index.html b/ru/news/author/brad-richardson/index.html index a09799694151..e2ede93f7a5e 100644 --- a/ru/news/author/brad-richardson/index.html +++ b/ru/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Brad Richardson , @@ -533,21 +536,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -616,14 +619,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -696,56 +699,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -805,7 +808,7 @@

- Milan Curcic + Brad Richardson , @@ -819,7 +822,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -833,28 +836,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -914,7 +917,7 @@

- Milan Curcic + Brad Richardson , @@ -928,28 +931,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -1009,49 +1012,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -1111,14 +1114,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/news/author/damian-rouson/index.html b/ru/news/author/damian-rouson/index.html index f2ea46ebc899..0b8ea8afcc6b 100644 --- a/ru/news/author/damian-rouson/index.html +++ b/ru/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/author/gagandeep-singh/index.html b/ru/news/author/gagandeep-singh/index.html index 734ce04f7f00..89fb813e1846 100644 --- a/ru/news/author/gagandeep-singh/index.html +++ b/ru/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -533,7 +536,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -593,7 +596,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -607,14 +610,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , diff --git a/ru/news/author/gary-klimowicz/index.html b/ru/news/author/gary-klimowicz/index.html index 73148a461d6e..bdcca1c3ddd6 100644 --- a/ru/news/author/gary-klimowicz/index.html +++ b/ru/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -540,14 +543,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -608,21 +611,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -636,7 +639,7 @@

- Ondřej Čertík + Milan Curcic @@ -696,7 +699,7 @@

- Milan Curcic + Brad Richardson , @@ -710,7 +713,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -724,28 +727,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -805,7 +808,7 @@

- Milan Curcic + Brad Richardson , @@ -819,28 +822,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -900,49 +903,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/giannis-nikiteas/index.html b/ru/news/author/giannis-nikiteas/index.html index 3171dde1764a..44a9f7d155e6 100644 --- a/ru/news/author/giannis-nikiteas/index.html +++ b/ru/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -533,7 +536,7 @@

- Alexis Perry-Holby + Gagandeep Singh diff --git a/ru/news/author/henil-panchal/index.html b/ru/news/author/henil-panchal/index.html index 3a76a54c15d9..ae7c3f9d7ceb 100644 --- a/ru/news/author/henil-panchal/index.html +++ b/ru/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic diff --git a/ru/news/author/index.html b/ru/news/author/index.html index ebe10058ee9c..69213e57be23 100644 --- a/ru/news/author/index.html +++ b/ru/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/author/ivan-pribec/index.html b/ru/news/author/ivan-pribec/index.html index 5e11a9db1e52..c3760a19b65d 100644 --- a/ru/news/author/ivan-pribec/index.html +++ b/ru/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Brad Richardson , @@ -526,7 +529,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -540,28 +543,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert diff --git a/ru/news/author/jeremie-vandenplas/index.html b/ru/news/author/jeremie-vandenplas/index.html index 0110b4895c63..9b191af5c247 100644 --- a/ru/news/author/jeremie-vandenplas/index.html +++ b/ru/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -526,14 +529,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -600,14 +603,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -621,14 +624,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -689,14 +692,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -710,14 +713,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -786,7 +789,7 @@

- Milan Curcic + Laurence Kedward , @@ -800,14 +803,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -874,21 +877,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -902,14 +905,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -970,21 +973,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -998,7 +1001,7 @@

- Ondřej Čertík + Milan Curcic @@ -1058,7 +1061,7 @@

- Milan Curcic + Brad Richardson , @@ -1072,28 +1075,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -1153,49 +1156,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -1255,14 +1258,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -1283,7 +1286,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/laurence-kedward/index.html b/ru/news/author/laurence-kedward/index.html index 8f70e53b4255..fa1001e064be 100644 --- a/ru/news/author/laurence-kedward/index.html +++ b/ru/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -533,14 +536,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -609,14 +612,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -683,14 +686,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -757,35 +760,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -845,14 +848,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -926,7 +929,7 @@

- Milan Curcic + Brad Richardson , @@ -947,21 +950,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1023,7 +1026,7 @@

- Milan Curcic + Laurence Kedward , @@ -1037,21 +1040,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1118,14 +1121,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1198,7 +1201,7 @@

- Milan Curcic + Laurence Kedward , @@ -1212,21 +1215,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1286,56 +1289,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1395,14 +1398,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1469,7 +1472,7 @@

- Milan Curcic + Laurence Kedward , @@ -1483,14 +1486,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -1557,21 +1560,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1585,14 +1588,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1653,21 +1656,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1681,7 +1684,7 @@

- Ondřej Čertík + Milan Curcic @@ -1741,7 +1744,7 @@

- Milan Curcic + Brad Richardson , @@ -1755,7 +1758,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -1769,28 +1772,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -1850,14 +1853,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -1878,7 +1881,7 @@

- Ondřej Čertík + Milan Curcic @@ -1938,14 +1941,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/ru/news/author/marshall-ward/index.html b/ru/news/author/marshall-ward/index.html index 34f374ebb225..5e951d98b030 100644 --- a/ru/news/author/marshall-ward/index.html +++ b/ru/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/author/milan-curcic-and-ondrej-certik/index.html b/ru/news/author/milan-curcic-and-ondrej-certik/index.html index c132ad64ef4b..167fe9004691 100644 --- a/ru/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/ru/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/news/author/milan-curcic/index.html b/ru/news/author/milan-curcic/index.html index c7f37c2be2cc..702b5ef23691 100644 --- a/ru/news/author/milan-curcic/index.html +++ b/ru/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -614,7 +617,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,7 +818,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -829,14 +832,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -903,14 +906,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -924,14 +927,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -992,14 +995,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -1013,14 +1016,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1089,21 +1092,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1163,21 +1166,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -1251,21 +1254,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1325,14 +1328,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1399,35 +1402,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1487,14 +1490,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1568,7 +1571,7 @@

- Milan Curcic + Brad Richardson , @@ -1589,21 +1592,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1665,7 +1668,7 @@

- Milan Curcic + Laurence Kedward , @@ -1679,21 +1682,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1760,14 +1763,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1840,7 +1843,7 @@

- Milan Curcic + Laurence Kedward , @@ -1854,21 +1857,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1928,56 +1931,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2037,14 +2040,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2111,7 +2114,7 @@

- Milan Curcic + Laurence Kedward , @@ -2125,14 +2128,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -2199,21 +2202,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2227,14 +2230,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2295,21 +2298,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2323,7 +2326,7 @@

- Ondřej Čertík + Milan Curcic @@ -2383,7 +2386,7 @@

- Milan Curcic + Brad Richardson , @@ -2397,7 +2400,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -2411,28 +2414,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -2492,7 +2495,7 @@

- Milan Curcic + Brad Richardson , @@ -2506,28 +2509,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2587,49 +2590,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2689,14 +2692,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -2717,7 +2720,7 @@

- Ondřej Čertík + Milan Curcic @@ -2777,14 +2780,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , diff --git a/ru/news/author/ondrej-certik-and-zach-jibben/index.html b/ru/news/author/ondrej-certik-and-zach-jibben/index.html index 3bc119218ba0..2c4bf87313b5 100644 --- a/ru/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/ru/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/author/ondrej-certik/index.html b/ru/news/author/ondrej-certik/index.html index 8f633f42a0c0..8df3da539789 100644 --- a/ru/news/author/ondrej-certik/index.html +++ b/ru/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -600,14 +603,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -667,14 +670,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -688,14 +691,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -756,14 +759,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -777,14 +780,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -853,21 +856,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -934,14 +937,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1015,21 +1018,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1089,14 +1092,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1163,35 +1166,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1251,14 +1254,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1332,7 +1335,7 @@

- Milan Curcic + Brad Richardson , @@ -1353,21 +1356,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1429,7 +1432,7 @@

- Milan Curcic + Laurence Kedward , @@ -1443,21 +1446,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1524,14 +1527,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1604,7 +1607,7 @@

- Milan Curcic + Laurence Kedward , @@ -1618,21 +1621,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1692,56 +1695,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1801,14 +1804,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1875,21 +1878,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1903,14 +1906,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1971,21 +1974,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1999,7 +2002,7 @@

- Ondřej Čertík + Milan Curcic @@ -2059,7 +2062,7 @@

- Milan Curcic + Brad Richardson , @@ -2073,7 +2076,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -2087,28 +2090,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -2168,7 +2171,7 @@

- Milan Curcic + Brad Richardson , @@ -2182,28 +2185,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2263,49 +2266,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2365,14 +2368,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -2393,7 +2396,7 @@

- Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/sebastian-ehlert/index.html b/ru/news/author/sebastian-ehlert/index.html index 0c35bdf734a0..8d7a257af570 100644 --- a/ru/news/author/sebastian-ehlert/index.html +++ b/ru/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,7 +515,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -526,14 +529,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -600,14 +603,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -621,14 +624,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -689,14 +692,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -710,14 +713,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -786,21 +789,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -860,21 +863,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -948,21 +951,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1022,35 +1025,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1110,14 +1113,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1191,7 +1194,7 @@

- Milan Curcic + Brad Richardson , @@ -1212,21 +1215,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1288,7 +1291,7 @@

- Milan Curcic + Laurence Kedward , @@ -1302,21 +1305,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1376,7 +1379,7 @@

- Milan Curcic + Laurence Kedward , @@ -1390,21 +1393,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1464,56 +1467,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1573,7 +1576,7 @@

- Milan Curcic + Laurence Kedward , @@ -1587,14 +1590,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -1661,21 +1664,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -1689,14 +1692,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1757,7 +1760,7 @@

- Milan Curcic + Brad Richardson , @@ -1771,7 +1774,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -1785,28 +1788,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert diff --git a/ru/news/author/thomas-konig/index.html b/ru/news/author/thomas-konig/index.html index fe8362edf294..4e0cfa41182c 100644 --- a/ru/news/author/thomas-konig/index.html +++ b/ru/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,49 +515,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic diff --git a/ru/news/author/zachary-moon/index.html b/ru/news/author/zachary-moon/index.html index 7c06c9017697..dec269787891 100644 --- a/ru/news/author/zachary-moon/index.html +++ b/ru/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert diff --git a/ru/news/category/index.html b/ru/news/category/index.html index 56793f5db936..f64688a5a01c 100644 --- a/ru/news/category/index.html +++ b/ru/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/category/newsletter/index.html b/ru/news/category/newsletter/index.html index afe02cfaa774..a742de5588e2 100644 --- a/ru/news/category/newsletter/index.html +++ b/ru/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -614,7 +617,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,7 +818,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -829,14 +832,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -903,14 +906,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -924,14 +927,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -992,14 +995,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -1013,14 +1016,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1089,21 +1092,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1163,21 +1166,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -1244,14 +1247,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1325,21 +1328,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1399,14 +1402,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1473,35 +1476,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1561,14 +1564,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1642,7 +1645,7 @@

- Milan Curcic + Brad Richardson , @@ -1663,21 +1666,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1739,7 +1742,7 @@

- Milan Curcic + Laurence Kedward , @@ -1753,21 +1756,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1834,14 +1837,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1914,7 +1917,7 @@

- Milan Curcic + Laurence Kedward , @@ -1928,21 +1931,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2002,56 +2005,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2111,14 +2114,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2185,7 +2188,7 @@

- Milan Curcic + Laurence Kedward , @@ -2199,14 +2202,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -2273,21 +2276,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2301,14 +2304,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2369,21 +2372,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2397,7 +2400,7 @@

- Ondřej Čertík + Milan Curcic @@ -2457,7 +2460,7 @@

- Milan Curcic + Brad Richardson , @@ -2471,7 +2474,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -2485,28 +2488,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -2566,7 +2569,7 @@

- Milan Curcic + Brad Richardson , @@ -2580,28 +2583,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2661,49 +2664,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2763,14 +2766,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -2791,7 +2794,7 @@

- Ondřej Čertík + Milan Curcic @@ -2851,14 +2854,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/news/drafts/index.html b/ru/news/drafts/index.html index b20c2fc66a10..05625562a0fc 100644 --- a/ru/news/drafts/index.html +++ b/ru/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/news/index.html b/ru/news/index.html index 6c42552d4eb6..1ee7f090051c 100644 --- a/ru/news/index.html +++ b/ru/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,28 +515,28 @@

- Henil Panchal + Ondřej Čertík , - Ondřej Čertík + Alexis Perry-Holby , - Milan Curcic + Henil Panchal , - Alexis Perry-Holby + Milan Curcic @@ -593,14 +596,14 @@

- Giannis Nikiteas + Alexis Perry-Holby , - Gagandeep Singh + Giannis Nikiteas , @@ -614,7 +617,7 @@

- Alexis Perry-Holby + Gagandeep Singh @@ -674,14 +677,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -748,14 +751,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Milan Curcic @@ -815,7 +818,7 @@

- Milan Curcic + Alexis Perry-Holby , @@ -829,14 +832,14 @@

- Alexis Perry-Holby + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -903,14 +906,14 @@

- Milan Curcic + Alexis Perry-Holby , - Alexis Perry-Holby + Ondřej Čertík , @@ -924,14 +927,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -992,14 +995,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -1013,14 +1016,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1089,21 +1092,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1163,21 +1166,21 @@

- Milan Curcic + Ondřej Čertík , - Alexis Perry-Holby + Milan Curcic , - Ondřej Čertík + Alexis Perry-Holby , @@ -1244,14 +1247,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1325,21 +1328,21 @@

- Milan Curcic + Alexis Perry-Holby , - Sebastian Ehlert + Milan Curcic , - Alexis Perry-Holby + Sebastian Ehlert @@ -1399,14 +1402,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1473,35 +1476,35 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Zachary Moon , - Zachary Moon + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1561,14 +1564,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1642,7 +1645,7 @@

- Milan Curcic + Brad Richardson , @@ -1663,21 +1666,21 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1739,7 +1742,7 @@

- Milan Curcic + Laurence Kedward , @@ -1753,21 +1756,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -1834,14 +1837,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -1914,7 +1917,7 @@

- Milan Curcic + Laurence Kedward , @@ -1928,21 +1931,21 @@

- Laurence Kedward + Ondřej Čertík , - Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2002,56 +2005,56 @@

- Damian Rouson + Brad Richardson , - Milan Curcic + Laurence Kedward , - Laurence Kedward + Marshall Ward , - Marshall Ward + Arjen Markus , - Arjen Markus + Ondřej Čertík , - Sebastian Ehlert + Damian Rouson , - Brad Richardson + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2111,14 +2114,14 @@

- Laurence Kedward + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward , @@ -2185,7 +2188,7 @@

- Milan Curcic + Laurence Kedward , @@ -2199,14 +2202,14 @@

- Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic , @@ -2273,21 +2276,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2301,14 +2304,14 @@

- Sebastian Ehlert + Milan Curcic , - Ondřej Čertík + Sebastian Ehlert @@ -2369,21 +2372,21 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , @@ -2397,7 +2400,7 @@

- Ondřej Čertík + Milan Curcic @@ -2457,7 +2460,7 @@

- Milan Curcic + Brad Richardson , @@ -2471,7 +2474,7 @@

- Ivan Pribec + Jeremie Vandenplas , @@ -2485,28 +2488,28 @@

- Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Ivan Pribec , - Ondřej Čertík + Milan Curcic , - Jeremie Vandenplas + Sebastian Ehlert @@ -2566,7 +2569,7 @@

- Milan Curcic + Brad Richardson , @@ -2580,28 +2583,28 @@

- Jérémie Vandenplas + Ondřej Čertík , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2661,49 +2664,49 @@

- Milan Curcic + Brad Richardson , - Thomas König + Gary Klimowicz , - Gary Klimowicz + Ondřej Čertík , - Jérémie Vandenplas + Thomas König , - Brad Richardson + and Laurence Kedward , - and Laurence Kedward + Jérémie Vandenplas , - Ondřej Čertík + Milan Curcic @@ -2763,14 +2766,14 @@

- Milan Curcic + Laurence Kedward , - Laurence Kedward + Ondřej Čertík , @@ -2791,7 +2794,7 @@

- Ondřej Čertík + Milan Curcic @@ -2851,14 +2854,14 @@

- Laurence Kedward + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward , @@ -2925,14 +2928,14 @@

- Milan Curcic and Ondřej Čertík + Brad Richardson , - Brad Richardson + Milan Curcic and Ondřej Čertík , diff --git a/ru/packages/data-types/index.html b/ru/packages/data-types/index.html index d07e133ae425..edb8e03ee691 100644 --- a/ru/packages/data-types/index.html +++ b/ru/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/examples/index.html b/ru/packages/examples/index.html index 0fc481580d72..e46c71bd1bbf 100644 --- a/ru/packages/examples/index.html +++ b/ru/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/graphics/index.html b/ru/packages/graphics/index.html index 9065005b32e2..633c85901719 100644 --- a/ru/packages/graphics/index.html +++ b/ru/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/index.html b/ru/packages/index.html index 634f623cf065..efb3ebbf98b3 100644 --- a/ru/packages/index.html +++ b/ru/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/interfaces/index.html b/ru/packages/interfaces/index.html index 00e6b1e724aa..b77d377299bb 100644 --- a/ru/packages/interfaces/index.html +++ b/ru/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/io/index.html b/ru/packages/io/index.html index 891d697c21bd..6855b81a7522 100644 --- a/ru/packages/io/index.html +++ b/ru/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/libraries/index.html b/ru/packages/libraries/index.html index 6aadd53dc8b7..b91bbf9c778d 100644 --- a/ru/packages/libraries/index.html +++ b/ru/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/numerical/index.html b/ru/packages/numerical/index.html index bfceb94382b1..6e31dd461239 100644 --- a/ru/packages/numerical/index.html +++ b/ru/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/programming/index.html b/ru/packages/programming/index.html index 9189001edd1c..4556eca47eab 100644 --- a/ru/packages/programming/index.html +++ b/ru/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/scientific/index.html b/ru/packages/scientific/index.html index 9a906b5bb9ce..357c894c2110 100644 --- a/ru/packages/scientific/index.html +++ b/ru/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/packages/strings/index.html b/ru/packages/strings/index.html index 74fb4eadc112..fd710c13415f 100644 --- a/ru/packages/strings/index.html +++ b/ru/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/roadmap/index.html b/ru/roadmap/index.html index 45e89d8ea49f..fac31052f564 100644 --- a/ru/roadmap/index.html +++ b/ru/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/ru/search/index.html b/ru/search/index.html index 564bc708dcd7..5a7933ee7d85 100644 --- a/ru/search/index.html +++ b/ru/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/search/index.html b/search/index.html new file mode 100644 index 000000000000..b4c61c22e689 --- /dev/null +++ b/search/index.html @@ -0,0 +1,469 @@ + + + + + + + + Search — Fortran Programming Language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + +
+ + + + + +
+ +
+ + + + +
+ +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+ + + +
+ +
+
+ + + + + + +
+
+ + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000000..4a8c6a721d99 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["community", "community/contributing", "community/history", "community/minibooks", "community/packages", "compilers", "index", "learn", "learn/best_practices/allocatable_arrays", "learn/best_practices/arrays", "learn/best_practices/callbacks", "learn/best_practices/element_operations", "learn/best_practices/file_io", "learn/best_practices/floating_point", "learn/best_practices/index", "learn/best_practices/integer_division", "learn/best_practices/modules_programs", "learn/best_practices/multidim_arrays", "learn/best_practices/style_guide", "learn/best_practices/type_casting", "learn/building_programs/build_tools", "learn/building_programs/compiling_source", "learn/building_programs/distributing", "learn/building_programs/include_files", "learn/building_programs/index", "learn/building_programs/linking_pieces", "learn/building_programs/managing_libraries", "learn/building_programs/project_make", "learn/building_programs/runtime_libraries", "learn/intrinsics/array", "learn/intrinsics/bit", "learn/intrinsics/cfi", "learn/intrinsics/character", "learn/intrinsics/compiler", "learn/intrinsics/index", "learn/intrinsics/math", "learn/intrinsics/model", "learn/intrinsics/numeric", "learn/intrinsics/parallel", "learn/intrinsics/state", "learn/intrinsics/system", "learn/intrinsics/transform", "learn/intrinsics/type", "learn/os_setup/choose_compiler", "learn/os_setup/ides", "learn/os_setup/index", "learn/os_setup/install_gfortran", "learn/os_setup/text_editors", "learn/os_setup/tips", "learn/quickstart/arrays_strings", "learn/quickstart/derived_types", "learn/quickstart/hello_world", "learn/quickstart/index", "learn/quickstart/operators_control_flow", "learn/quickstart/organising_code", "learn/quickstart/variables", "news", "news/2020/02-28-J3-february-meeting", "news/2020/04-06-Announcing-FortranCon-2020", "news/2020/04-18-Fortran-Webinar", "news/2020/05-01-Fortran-Newsletter-May-2020", "news/2020/06-01-Fortran-Newsletter-June-2020", "news/2020/07-01-Fortran-Newsletter-July-2020", "news/2020/08-01-Fortran-Newsletter-August-2020", "news/2020/09-01-Fortran-Newsletter-September-2020", "news/2020/10-01-Fortran-Newsletter-October-2020", "news/2020/11-01-Fortran-Newsletter-November-2020", "news/2020/12-01-Fortran-Newsletter-December-2020", "news/2021/01-01-Fortran-Newsletter-January-2021", "news/2021/02-01-Fortran-Newsletter-February-2021", "news/2021/03-01-Fortran-Newsletter-March-2021", "news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021", "news/2021/04-01-Fortran-Newsletter-April-2021", "news/2021/04-20-First-Year", "news/2021/05-01-Fortran-Newsletter-May-2021", "news/2021/05-18-Welcome-GSoC-students", "news/2021/06-01-Fortran-Newsletter-June-2021", "news/2021/07-01-Fortran-Newsletter-July-2021", "news/2021/08-01-Fortran-Newsletter-August-2021", "news/2021/09-01-Fortran-Newsletter-September-2021", "news/2021/10-01-Fortran-Newsletter-October-2021", "news/2021/11-01-Fortran-Newsletter-November-2021", "news/2021/12-01-Fortran-Newsletter-December-2021", "news/2021/12-29-Fortran-lang-2021-in-review", "news/2022/01-01-Fortran-Newsletter-January-2022", "news/2022/02-01-Fortran-Newsletter-February-2022", "news/2022/03-09-Fortran-Newsletter-March-2022", "news/2022/04-07-Fortran-Newsletter-April-2022", "news/2022/05-05-Fortran-Newsletter-May-2022", "news/2022/06-09-Fortran-Newsletter-June-2022", "packages", "packages/data-types", "packages/examples", "packages/graphics", "packages/interfaces", "packages/io", "packages/libraries", "packages/numerical", "packages/programming", "packages/scientific", "packages/strings", "roadmap"], "filenames": ["community.md", "community/contributing.md", "community/history.md", "community/minibooks.md", "community/packages.md", "compilers.md", "index.md", "learn.md", "learn/best_practices/allocatable_arrays.md", "learn/best_practices/arrays.md", "learn/best_practices/callbacks.md", "learn/best_practices/element_operations.md", "learn/best_practices/file_io.md", "learn/best_practices/floating_point.md", "learn/best_practices/index.md", "learn/best_practices/integer_division.md", "learn/best_practices/modules_programs.md", "learn/best_practices/multidim_arrays.md", "learn/best_practices/style_guide.md", "learn/best_practices/type_casting.md", "learn/building_programs/build_tools.md", "learn/building_programs/compiling_source.md", "learn/building_programs/distributing.md", "learn/building_programs/include_files.md", "learn/building_programs/index.md", "learn/building_programs/linking_pieces.md", "learn/building_programs/managing_libraries.md", "learn/building_programs/project_make.md", "learn/building_programs/runtime_libraries.md", "learn/intrinsics/array.md", "learn/intrinsics/bit.md", "learn/intrinsics/cfi.md", "learn/intrinsics/character.md", "learn/intrinsics/compiler.md", "learn/intrinsics/index.md", "learn/intrinsics/math.md", "learn/intrinsics/model.md", "learn/intrinsics/numeric.md", "learn/intrinsics/parallel.md", "learn/intrinsics/state.md", "learn/intrinsics/system.md", "learn/intrinsics/transform.md", "learn/intrinsics/type.md", "learn/os_setup/choose_compiler.md", "learn/os_setup/ides.md", "learn/os_setup/index.md", "learn/os_setup/install_gfortran.md", "learn/os_setup/text_editors.md", "learn/os_setup/tips.md", "learn/quickstart/arrays_strings.md", "learn/quickstart/derived_types.md", "learn/quickstart/hello_world.md", "learn/quickstart/index.md", "learn/quickstart/operators_control_flow.md", "learn/quickstart/organising_code.md", "learn/quickstart/variables.md", "news.md", "news/2020/02-28-J3-february-meeting.md", "news/2020/04-06-Announcing-FortranCon-2020.md", "news/2020/04-18-Fortran-Webinar.md", "news/2020/05-01-Fortran-Newsletter-May-2020.md", "news/2020/06-01-Fortran-Newsletter-June-2020.md", "news/2020/07-01-Fortran-Newsletter-July-2020.md", "news/2020/08-01-Fortran-Newsletter-August-2020.md", "news/2020/09-01-Fortran-Newsletter-September-2020.md", "news/2020/10-01-Fortran-Newsletter-October-2020.md", "news/2020/11-01-Fortran-Newsletter-November-2020.md", "news/2020/12-01-Fortran-Newsletter-December-2020.md", "news/2021/01-01-Fortran-Newsletter-January-2021.md", "news/2021/02-01-Fortran-Newsletter-February-2021.md", "news/2021/03-01-Fortran-Newsletter-March-2021.md", "news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021.md", "news/2021/04-01-Fortran-Newsletter-April-2021.md", "news/2021/04-20-First-Year.md", "news/2021/05-01-Fortran-Newsletter-May-2021.md", "news/2021/05-18-Welcome-GSoC-students.md", "news/2021/06-01-Fortran-Newsletter-June-2021.md", "news/2021/07-01-Fortran-Newsletter-July-2021.md", "news/2021/08-01-Fortran-Newsletter-August-2021.md", "news/2021/09-01-Fortran-Newsletter-September-2021.md", "news/2021/10-01-Fortran-Newsletter-October-2021.md", "news/2021/11-01-Fortran-Newsletter-November-2021.md", "news/2021/12-01-Fortran-Newsletter-December-2021.md", "news/2021/12-29-Fortran-lang-2021-in-review.md", "news/2022/01-01-Fortran-Newsletter-January-2022.md", "news/2022/02-01-Fortran-Newsletter-February-2022.md", "news/2022/03-09-Fortran-Newsletter-March-2022.md", "news/2022/04-07-Fortran-Newsletter-April-2022.md", "news/2022/05-05-Fortran-Newsletter-May-2022.md", "news/2022/06-09-Fortran-Newsletter-June-2022.md", "packages.md", "packages/data-types.md", "packages/examples.md", "packages/graphics.md", "packages/interfaces.md", "packages/io.md", "packages/libraries.md", "packages/numerical.md", "packages/programming.md", "packages/scientific.md", "packages/strings.md", "roadmap.md"], "titles": ["Community", "Contributing to fortran-lang.org", "Fortran-lang history", "Mini-book Tutorials on fortran-lang.org", "Fortran-lang.org package index", "Compilers", "The Fortran Programming Language", "Learn", "Allocatable Arrays", "Arrays", "Callbacks", "Element-wise Operations on Arrays", "File Input/Output", "Floating Point Numbers", "Fortran Best Practices", "Integer Division", "Modules and Programs", "Multidimensional Arrays", "Fortran Style Guide", "Type Casting in Callbacks", "Build tools", "Compiling the source code", "Distributing your programs", "Include files and modules", "Building programs", "Linking the objects", "Managing libraries (static and dynamic libraries)", "An introduction to make", "Run-time libraries", "Properties and attributes of arrays", "Bit-level inquiry and manipulation", "Procedures for binding to C interfaces", "Basic procedures for manipulating character variables", "Information about compiler and compiler options used for building", "Fortran Intrinsics", "General mathematical functions", "Controlling and querying the current numeric model", "Manipulation and properties of numeric values", "Parallel programming using co_arrays and co_indexed arrays", "General and miscellaneous intrinsics", "Accessing external system information", "Matrix multiplication, dot product, and array shifts", "Types and kinds", "Choosing a compiler", "IDEs", "Setting up your OS", "Installing GFortran", "Text Editors", "Smart Tips", "Arrays and strings", "Derived Types", "Hello world", "Quickstart tutorial", "Operators and flow control", "Organising code structure", "Variables", "News", "J3 February 2020 Meeting", "FortranCon 2020", "Open Source Directions Fortran webinar", "Fortran newsletter: May 2020", "Fortran newsletter: June 2020", "Fortran newsletter: July 2020", "Fortran newsletter: August 2020", "Fortran newsletter: September 2020", "Fortran newsletter: October 2020", "Fortran newsletter: November 2020", "Fortran newsletter: December 2020", "Fortran newsletter: January 2021", "Fortran newsletter: February 2021", "Fortran newsletter: March 2021", "Fortran-lang accepted to Google Summer of Code 2021", "Fortran newsletter: April 2021", "First year of the Fortran website", "Fortran newsletter: May 2021", "Fortran-lang welcomes new students to Google Summer of Code 2021", "Fortran newsletter: June 2021", "Fortran newsletter: July 2021", "Fortran newsletter: August 2021", "Fortran newsletter: September 2021", "Fortran newsletter: October 2021", "Fortran newsletter: November 2021", "Fortran newsletter: December 2021", "Fortran-lang: 2021 in review", "Fortran newsletter: January 2022", "Fortran newsletter: February 2022", "Fortran newsletter: March 2022", "Fortran newsletter: April 2022", "Fortran newsletter: May 2022", "Fortran newsletter: June 2022", "Packages", "Libraries for advanced data types and container classes", "Demonstration codes and templates for Fortran", "Libraries for plotting data, handling images and generating user interfaces", "Libraries that interface with other systems, languages, or devices", "Libraries for reading, writing and parsing files and inputs", "Fortran libraries for general programming tasks", "Fortran libraries for linear algebra, optimization, root-finding etc.", "Error handling, logging, documentation and testing", "Applications and libraries for applied mathematical and scientific problems", "Libraries for manipulating characters and strings", "Roadmap "], "terms": {"fortran": [0, 5, 7, 9, 11, 12, 13, 15, 16, 19, 20, 21, 22, 23, 24, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 90, 91, 93, 94, 95, 98, 99, 100], "lang": [0, 6, 7, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 73, 90, 101], "collabor": [0, 2, 7, 18, 99, 101], "advanc": [0, 4, 5, 7, 17, 29, 30, 32, 36, 37, 41, 47, 50, 80, 83, 84, 88, 89, 90, 99], "project": [0, 4, 5, 6, 16, 27, 34, 44, 46, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "standard": [0, 4, 5, 6, 7, 9, 15, 16, 18, 19, 25, 34, 49, 50, 51, 58, 73, 75, 92, 94, 95, 96, 97, 99, 100], "librari": [0, 4, 5, 6, 7, 16, 18, 19, 20, 22, 25, 27, 34, 58, 75, 98], "stdlib": [0, 6, 34, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 95, 96, 101], "A": [0, 3, 5, 7, 9, 10, 12, 20, 22, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 51, 53, 54, 55, 61, 64, 65, 66, 69, 72, 74, 81, 83, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "driven": [0, 2, 34, 67, 96], "de": [0, 2, 40, 96], "facto": [0, 2, 96], "The": [0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 95, 96, 99, 101], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 95, 99, 101], "both": [0, 2, 12, 18, 19, 20, 26, 29, 30, 32, 35, 37, 40, 41, 42, 43, 50, 53, 54, 60, 61, 63, 72, 81, 83, 101], "specif": [0, 4, 5, 7, 9, 20, 22, 25, 27, 29, 30, 32, 34, 38, 40, 44, 53, 60, 61, 62, 64, 65, 67, 68, 69, 70, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 101], "refer": [0, 3, 20, 21, 25, 26, 29, 30, 32, 34, 35, 38, 39, 40, 42, 44, 50, 51, 53, 54, 55, 60, 61, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "implement": [0, 3, 4, 5, 11, 16, 19, 22, 25, 26, 27, 32, 41, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94, 95, 97, 98, 99, 100, 101], "develop": [0, 1, 2, 4, 5, 6, 7, 20, 23, 27, 44, 45, 47, 48, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 99, 101], "cooper": [0, 21], "committe": [0, 2, 6, 7, 42, 57, 58, 60, 61, 66, 67, 70, 72, 73, 77, 81, 86], "github": [0, 1, 2, 3, 6, 7, 19, 27, 28, 40, 63, 64, 65, 66, 67, 68, 70, 72, 74, 79, 80, 83, 88, 101], "document": [0, 1, 3, 4, 7, 16, 20, 22, 27, 34, 40, 43, 47, 54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 99], "contribut": [0, 3, 4, 6, 34, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "packag": [0, 1, 3, 5, 6, 16, 27, 34, 44, 46, 47, 51, 59, 75, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "manag": [0, 4, 6, 8, 12, 46, 47, 51, 75, 98], "fpm": [0, 4, 6, 34, 47, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 98], "prototyp": [0, 4, 48, 63, 65, 66, 68, 83, 84, 89, 101], "common": [0, 5, 14, 18, 20, 29, 30, 32, 35, 36, 40, 41, 42, 44, 46, 49, 50, 52, 53, 55, 77, 78, 81, 83, 85, 87, 88, 89, 95, 98], "build": [0, 1, 2, 5, 7, 21, 22, 23, 25, 26, 27, 34, 45, 46, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 98], "system": [0, 2, 5, 6, 7, 22, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 43, 45, 47, 51, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 97, 98, 99], "depend": [0, 1, 2, 3, 4, 5, 16, 17, 18, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 35, 37, 39, 40, 41, 42, 44, 50, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 99, 101], "org": [0, 2, 5, 6, 7, 19, 20, 34, 37, 47, 57, 73, 101], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 101], "websit": [0, 1, 2, 3, 6, 43, 48, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "open": [0, 1, 3, 4, 5, 6, 12, 20, 39, 42, 43, 46, 47, 48, 51, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "sourc": [0, 1, 4, 5, 6, 8, 16, 20, 22, 23, 24, 25, 26, 27, 29, 30, 40, 42, 43, 46, 48, 51, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "ar": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "welcom": [0, 1, 2, 18, 47, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "histori": [0, 23, 28, 96], "effort": [0, 2, 27, 44, 81, 83], "new": [0, 1, 2, 5, 6, 7, 12, 20, 26, 29, 30, 32, 34, 38, 39, 45, 47, 50, 51, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "around": [0, 1, 2, 5, 42, 60, 61, 68, 80, 94], "start": [0, 2, 3, 6, 7, 9, 12, 16, 20, 21, 24, 25, 29, 30, 32, 35, 36, 37, 40, 41, 42, 44, 45, 47, 52, 53, 55, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "begin": [0, 2, 25, 27, 29, 30, 39, 41, 50, 55, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "2020": [0, 2, 7, 40, 44, 50, 73, 83], "wa": [0, 2, 8, 19, 20, 21, 22, 29, 32, 33, 35, 37, 38, 39, 40, 41, 42, 46, 50, 57, 60, 61, 63, 64, 65, 66, 67, 68, 73, 75, 77, 80, 81, 82, 83, 85], "initi": [0, 2, 8, 9, 29, 30, 32, 35, 37, 38, 39, 40, 41, 42, 50, 55, 63, 64, 65, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "led": [0, 2, 83], "ond\u0159ej": [0, 2, 45, 57, 59, 60, 61, 70, 72, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89], "\u010dert\u00edk": [0, 2, 45, 57, 59, 60, 61, 70, 72, 75, 76, 78, 79, 80, 81, 83, 84, 85, 88, 89], "1": [0, 1, 2, 5, 8, 9, 11, 13, 15, 16, 17, 19, 20, 21, 22, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 46, 48, 49, 50, 53, 54, 55, 57, 58, 60, 61, 62, 64, 65, 68, 72, 74, 78, 79, 80, 81, 83, 84, 86, 88, 89, 94, 101], "milan": [0, 2, 7, 45, 59, 60, 61, 68, 72, 75, 81, 83], "curcic": [0, 2, 7, 45, 59, 60, 61, 68, 72, 75, 81, 83], "2": [0, 1, 2, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20, 22, 25, 27, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 46, 48, 49, 50, 53, 54, 55, 58, 60, 61, 62, 63, 64, 70, 72, 78, 83, 85, 87, 88, 89, 93, 94, 101], "sever": [0, 2, 7, 16, 20, 23, 25, 26, 27, 28, 39, 42, 45, 46, 63, 65, 66, 68, 70, 72, 74, 76, 77, 78, 79, 80, 81, 83], "discuss": [0, 2, 6, 7, 9, 14, 26, 27, 32, 34, 50, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 77, 80, 81, 83, 101], "ambiti": [0, 2], "propos": [0, 1, 2, 6, 7, 60, 61, 64, 70, 72, 78], "3": [0, 1, 2, 5, 7, 9, 11, 13, 15, 17, 20, 21, 22, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 46, 49, 53, 55, 58, 60, 65, 67, 68, 72, 77, 79, 80, 83, 85, 87, 89, 94, 97], "4": [0, 1, 2, 3, 5, 7, 9, 10, 11, 13, 15, 19, 20, 25, 29, 30, 32, 35, 36, 37, 38, 40, 41, 42, 49, 53, 58, 60, 61, 63, 64, 66, 70, 72, 79, 83, 86, 87, 89, 94, 97], "webpag": [0, 1, 2, 3, 20, 101], "logo": [0, 2, 86], "5": [0, 1, 2, 3, 4, 5, 8, 9, 11, 15, 20, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 51, 55, 57, 64, 65, 66, 67, 72, 74, 78, 79, 80, 81, 82, 83, 86, 94], "were": [0, 2, 21, 29, 30, 32, 37, 41, 42, 57, 63, 64, 65, 66, 69, 70, 72, 74, 76, 77, 79, 83, 86, 89], "creat": [0, 1, 2, 4, 8, 9, 10, 11, 12, 16, 17, 19, 22, 26, 27, 29, 37, 39, 42, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "With": [0, 2, 20, 27, 38, 46, 47, 63, 83], "attract": [0, 2], "more": [0, 1, 2, 3, 4, 5, 9, 18, 19, 20, 21, 22, 23, 25, 26, 28, 29, 30, 32, 35, 36, 39, 40, 42, 47, 49, 53, 55, 58, 60, 64, 65, 67, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 83, 85, 86, 87, 88, 89, 91, 97, 101], "contributor": [0, 1, 2, 83], "discours": [0, 1, 6, 7, 34, 48, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "provid": [0, 1, 2, 4, 5, 8, 9, 10, 16, 19, 20, 22, 25, 27, 29, 32, 34, 35, 36, 40, 42, 43, 44, 45, 46, 47, 49, 53, 54, 55, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 83, 84, 85, 91, 95, 97, 100, 101], "place": [0, 1, 2, 22, 29, 30, 32, 34, 37, 41, 42, 50, 53, 54, 57, 58, 60, 61, 73, 83, 101], "gener": [0, 2, 3, 4, 5, 6, 9, 12, 14, 18, 20, 21, 22, 23, 24, 25, 26, 29, 30, 32, 33, 34, 36, 37, 40, 41, 42, 46, 53, 54, 57, 61, 63, 65, 66, 67, 68, 69, 72, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 97, 98, 99, 101], "all": [0, 1, 2, 3, 5, 6, 7, 9, 11, 13, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 53, 54, 55, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 99], "thing": [0, 1, 2, 6, 7, 14, 16, 20, 22, 24, 26, 27, 28, 29, 47, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "announc": [0, 2, 6, 58, 60, 61, 70, 71, 72, 73, 74, 75, 76, 86, 87], "newli": [0, 2], "get": [0, 2, 3, 6, 7, 11, 20, 21, 23, 28, 29, 30, 35, 37, 38, 40, 47, 51, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "help": [0, 1, 2, 6, 7, 18, 20, 26, 28, 36, 46, 48, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "etc": [0, 1, 2, 4, 18, 24, 42, 63, 83, 88, 90], "sinc": [0, 1, 2, 18, 20, 26, 27, 29, 30, 32, 35, 36, 37, 40, 41, 42, 44, 46, 48, 49, 54, 55, 61, 69, 83, 86, 87, 99], "its": [0, 1, 2, 6, 7, 16, 19, 20, 22, 23, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 49, 50, 52, 54, 55, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "creation": [0, 9, 89], "join": [0, 2, 6, 20, 48, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 100], "hundr": [0, 2], "read": [0, 3, 7, 12, 20, 23, 25, 30, 35, 38, 39, 40, 48, 49, 54, 55, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94], "involv": [0, 79, 101], "easiest": [0, 20, 22], "wai": [0, 1, 7, 8, 9, 10, 13, 14, 16, 19, 20, 22, 24, 25, 26, 29, 30, 32, 35, 36, 41, 42, 46, 50, 55, 63, 64, 66, 67, 73, 78, 83, 94, 101], "comment": [0, 1, 16, 51, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "issu": [0, 4, 20, 42, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "pull": [0, 1, 3, 4, 61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "request": [0, 1, 3, 6, 42, 48, 61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "repositori": [0, 1, 4, 7, 27, 46, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 99, 101], "whether": [0, 15, 18, 20, 29, 30, 32, 37, 38, 39, 40, 41, 42, 46, 54], "beginn": [0, 7, 44, 45, 46], "season": 0, "veteran": 0, "your": [0, 1, 2, 4, 5, 6, 7, 9, 17, 18, 20, 23, 24, 26, 27, 28, 30, 39, 40, 42, 47, 48, 51, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "feedback": [0, 61, 64, 79], "most": [0, 1, 6, 8, 9, 13, 16, 17, 18, 20, 24, 29, 30, 32, 34, 37, 40, 41, 42, 45, 47, 48, 53, 54, 62, 63, 64, 65, 66, 67, 83, 87], "guid": [0, 3, 4, 7, 14, 20, 27, 34, 43, 45, 46, 47, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "futur": [0, 19, 44, 48, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "test": [0, 4, 6, 19, 20, 27, 29, 30, 31, 32, 37, 39, 40, 42, 46, 48, 50, 53, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 96, 97, 99, 100], "each": [0, 1, 3, 5, 11, 16, 19, 20, 21, 27, 28, 29, 30, 32, 35, 37, 38, 40, 41, 46, 49, 53, 54, 55, 62, 64, 70, 76], "clone": [0, 4, 27, 39], "own": [0, 18, 19, 22, 26, 28, 30, 37, 40, 41, 42, 44, 45, 50, 69, 83], "machin": [0, 3, 4, 20, 22, 30, 36, 37, 42, 46, 47, 51, 61, 65, 94, 97, 99], "": [0, 1, 2, 4, 5, 7, 9, 10, 18, 19, 20, 24, 25, 26, 27, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 50, 55, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 97, 99], "code": [0, 2, 4, 5, 6, 7, 9, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 32, 38, 40, 42, 44, 45, 46, 48, 49, 50, 51, 53, 55, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 84, 85, 86, 87, 88, 89, 91, 93, 94, 95, 96, 97, 98, 99, 100], "someth": [0, 1, 20, 21, 22, 29, 30, 32, 37, 39, 42, 51, 64], "doesn": [0, 1, 61, 89], "t": [0, 1, 3, 7, 18, 19, 26, 29, 30, 31, 32, 35, 36, 37, 38, 39, 41, 42, 53, 55, 58, 60, 61, 62, 64, 66, 67, 68, 69, 72, 80, 82, 83, 84, 85, 86, 87, 88, 89, 99], "work": [0, 1, 8, 16, 17, 20, 21, 25, 26, 27, 28, 29, 30, 32, 34, 42, 45, 47, 51, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 83, 88, 89, 101], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54, 55, 58, 60, 61, 63, 64, 65, 66, 67, 68, 72, 77, 79, 80, 81, 83, 85, 86, 89, 95, 99, 100, 101], "let": [0, 5, 19, 20, 24, 26, 29, 30, 32, 34, 40, 42, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "u": [0, 5, 6, 7, 20, 24, 26, 27, 32, 35, 48, 50, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "know": [0, 1, 5, 20, 22, 25, 28, 32, 35, 37, 42, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "we": [0, 5, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 35, 37, 39, 41, 43, 45, 46, 48, 49, 50, 51, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "valu": [0, 1, 8, 13, 16, 20, 21, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 42, 49, 50, 53, 54, 55, 57, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97], "user": [0, 1, 2, 4, 5, 7, 16, 19, 20, 22, 25, 26, 28, 29, 40, 42, 43, 47, 48, 49, 61, 63, 65, 73, 78, 80, 83, 84, 85, 86, 88, 94, 97, 101], "highli": [0, 5, 12, 16, 20], "bug": [0, 6, 19, 60, 63, 64, 68, 69, 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "report": [0, 6, 21, 25, 28, 40, 64, 66, 75, 78, 79, 80, 81, 82, 83, 86], "featur": [0, 1, 2, 3, 4, 5, 6, 7, 12, 20, 23, 27, 40, 42, 44, 46, 47, 48, 49, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "suggest": [0, 1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "want": [0, 15, 19, 20, 25, 26, 27, 28, 29, 32, 47, 83], "content": [0, 3, 8, 16, 20, 21, 26, 32, 52, 55, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "check": [0, 3, 4, 5, 8, 9, 10, 12, 16, 19, 20, 21, 22, 25, 26, 27, 29, 32, 33, 35, 42, 46, 48, 51, 54, 61, 62, 67, 68, 69, 72, 74, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89], "out": [0, 1, 2, 8, 9, 11, 16, 17, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 35, 37, 38, 39, 40, 41, 42, 48, 49, 50, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 99], "inform": [0, 1, 4, 7, 9, 20, 23, 25, 27, 28, 30, 34, 42, 43, 45, 46, 48, 53, 55, 62, 64, 70, 72, 77, 78, 79, 80, 81, 82, 86, 87, 89, 101], "workflow": [0, 12, 20, 24, 27, 61, 65, 72, 74, 76, 78, 80, 81, 82, 85], "recommend": [0, 1, 3, 4, 12, 13, 14, 16, 20, 27, 29, 35, 37, 44, 46, 48, 54, 60], "practic": [0, 1, 7, 17, 40, 42, 53, 54, 55, 77, 78, 79, 80, 81, 83], "conduct": [0, 29, 61], "As": [0, 3, 16, 19, 20, 22, 23, 28, 35, 37, 39, 40, 44, 47, 50, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 101], "strive": [0, 34], "make": [0, 1, 2, 3, 4, 6, 11, 15, 18, 25, 29, 30, 32, 37, 40, 41, 42, 46, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 101], "particip": [0, 58, 60, 61, 69, 70, 72, 73, 83, 86, 87], "our": [0, 2, 6, 19, 20, 23, 25, 26, 27, 49, 51, 53, 54, 55, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "friendli": [0, 2, 7, 20, 22, 46, 47, 78, 83], "harass": 0, "free": [0, 1, 5, 27, 29, 34, 41, 43, 44, 48, 51, 53, 58, 60, 61, 72, 78, 79, 84, 91], "experi": [0, 2, 47, 58, 99], "everyon": [0, 34, 37, 39, 83], "see": [0, 1, 3, 4, 11, 13, 18, 20, 21, 22, 25, 27, 28, 46, 51, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "full": [0, 5, 27, 28, 37, 47, 50, 58, 60, 61, 64, 65, 66, 76, 80, 83, 88, 99, 101], "http": [0, 1, 3, 19, 20, 27, 28, 37, 40, 46, 57, 58, 62, 63, 64, 65, 67, 72, 77, 78, 79, 83, 94], "git": [0, 1, 27, 46, 47, 61, 65, 79, 86, 88, 89, 101], "com": [0, 1, 3, 19, 27, 28, 40, 46, 63, 64, 65, 72, 79], "14ngiesta": 0, "adob": 0, "android": 0, "alexisperri": 0, "atalanttor": 0, "beliavski": [0, 83], "carltoffel": 0, "chetankarwa": 0, "dragonpara": 0, "euler": [0, 35, 97, 99], "37": [0, 13, 32, 36, 42, 85], "everlookneverse": 0, "irvis": 0, "jhenneberg": 0, "jim": 0, "215": [0, 68, 69], "fisher": 0, "lkedward": [0, 61], "leonard": 0, "reuter": 0, "mardiehl": [0, 61, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "ralf": 0, "burghardt": 0, "sideboard": 0, "st": 0, "maxwel": 0, "adenchfi": 0, "aktech": [0, 61], "aman": [0, 75, 76, 83], "godara": [0, 75, 76, 83], "ansatzx": 0, "aradi": [0, 7, 61], "arjenmarku": [0, 61, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "arteevraina": 0, "ashirrwad": 0, "aslozada": 0, "awvwgk": [0, 20], "band": [0, 32, 99], "prend": 0, "carlosun": 0, "certik": [0, 61, 76, 79], "chen850512337": 0, "dav05": 0, "degawa": 0, "dependabot": 0, "bot": 0, "dev": [0, 5, 63, 64, 65, 66, 67, 68, 69, 72, 74], "zero": [0, 29, 30, 32, 35, 36, 37, 38, 39, 40, 42, 49, 78, 79, 84, 87, 88], "ecasglez": 0, "ejovo13": 0, "epagon": [0, 61], "everythingfunct": [0, 61], "fiolj": 0, "fitojb": 0, "fluidnumer": 0, "joe": [0, 42], "freevryheid": 0, "gareth": 0, "nx": 0, "ghbrown": 0, "gnikit": 0, "greenrongreen": 0, "henilp105": 0, "hsnyder": 0, "ibara": 0, "imjasonmil": 0, "interkosmo": 0, "ivan": [0, 61, 83], "pi": [0, 10, 19, 35, 37, 41, 53, 55, 61, 72], "jacobwilliam": [0, 27, 61], "jme52": 0, "jvdp1": [0, 61], "kubajj": 0, "lewisfish": 0, "marshallward": 0, "milancurc": [0, 61, 72], "minhqdao": 0, "msz59": 0, "noisegul": 0, "nshaffer": 0, "ntimesgurgel": 0, "p": [0, 1, 7, 30, 31, 32, 36, 37, 38, 39, 42, 61], "costa": [0, 61], "pdebuyl": 0, "perazz": 0, "rouson": [0, 7, 57, 83], "sakamoti": 0, "sblionel": 0, "scivis": [0, 7], "semari": 0, "shahmoradi": [0, 61], "sloorush": 0, "smesko": 0, "syx": 0, "413": [0, 72], "tclune": 0, "thchang": 0, "urbanjost": [0, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "vmagnin": 0, "wclodius2": 0, "wiremoon": 0, "wyphan": 0, "zbeekman": [0, 61], "zjibben": 0, "zmoon": 0, "zoziha": [0, 79], "index": [1, 3, 9, 17, 27, 34, 38, 49, 66, 67, 68, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "how": [1, 3, 4, 6, 7, 19, 20, 27, 29, 30, 32, 37, 40, 41, 44, 45, 46, 47, 49, 55, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "add": [1, 4, 9, 20, 25, 26, 27, 29, 30, 38, 44, 46, 53, 61, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "entri": [1, 3, 20, 27, 29, 30, 37, 41, 67, 80, 84, 85, 86, 87, 88, 89], "minibook": [1, 34, 76], "write": [1, 6, 7, 11, 12, 16, 19, 20, 24, 25, 27, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 47, 51, 53, 54, 55, 69, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 101], "structur": [1, 16, 23, 27, 29, 46, 47, 52, 57, 61, 62, 63, 67, 68, 70, 72, 74, 79, 80, 81, 82, 85, 86, 87, 89, 90, 94, 95, 97, 99], "mini": [1, 7, 14, 45, 50, 61, 62, 66, 67, 72, 74, 76, 77, 78, 79, 80, 83, 88], "book": [1, 7, 14, 45, 50, 61, 62, 63, 66, 67, 70, 72, 74, 76, 77, 78, 79, 80, 81, 83, 88], "learn": [1, 4, 6, 20, 27, 47, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 97, 99], "section": [1, 3, 5, 9, 20, 22, 27, 29, 30, 34, 37, 40, 41, 42, 54, 57, 63, 64, 65, 67, 68, 70, 76, 77, 79, 80, 81, 82, 88, 96], "written": [1, 3, 4, 20, 34, 35, 51, 54, 62, 63, 83, 98], "primarili": [1, 4, 42], "combin": [1, 5, 7, 8, 20, 22, 25, 30, 60, 82, 88, 89, 95], "myst": [1, 34, 101], "flavour": 1, "html": [1, 62, 66, 67, 79, 88], "yaml": [1, 80, 96], "data": [1, 3, 4, 5, 6, 9, 16, 17, 19, 20, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 41, 49, 50, 51, 54, 55, 63, 64, 65, 66, 67, 68, 69, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 94, 95, 96, 97, 98, 100, 101], "compil": [1, 2, 4, 6, 7, 9, 10, 11, 16, 19, 20, 22, 23, 25, 26, 27, 28, 29, 30, 34, 37, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 60, 61, 62, 63, 73, 75, 83, 96, 101], "produc": [1, 3, 5, 20, 21, 26, 27, 29, 32, 35, 36, 37, 41, 42, 46, 51, 96], "pure": [1, 11, 16, 27, 30, 32, 38, 41, 47, 54, 79, 80, 82, 83, 86, 88, 98], "which": [1, 3, 5, 6, 8, 9, 12, 13, 16, 17, 18, 19, 20, 21, 24, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 46, 50, 51, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 97, 98, 101], "what": [1, 3, 6, 19, 20, 22, 23, 25, 28, 29, 30, 32, 35, 36, 39, 40, 42, 45, 46, 50, 53, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "you": [1, 2, 3, 5, 6, 10, 11, 13, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 39, 40, 41, 42, 45, 46, 47, 48, 50, 51, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94], "final": [1, 8, 9, 11, 12, 16, 20, 21, 27, 29, 46, 48, 49, 53, 57, 64, 79, 82, 83, 84, 87, 89], "static": [1, 5, 6, 16, 22, 27, 49, 55, 85, 98], "mean": [1, 17, 18, 20, 21, 22, 27, 29, 30, 35, 37, 42, 47, 49, 51, 53, 55, 89], "onc": [1, 3, 8, 20, 27, 49, 51, 55, 79, 83], "built": [1, 5, 12, 20, 21, 22, 24, 25, 26, 29, 32, 42, 47, 49, 50, 55, 60, 63], "same": [1, 3, 6, 11, 15, 16, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 46, 47, 50, 53, 63, 68, 82, 87, 88, 89], "contrast": [1, 18, 50], "mani": [1, 5, 6, 9, 13, 20, 21, 23, 26, 29, 30, 32, 34, 37, 41, 42, 44, 45, 46, 47, 48, 62, 63, 64, 65, 72, 75, 77, 78, 79, 80, 81, 83, 89, 91, 97, 99], "dynam": [1, 6, 9, 22, 25, 27, 28, 29, 30, 38, 39, 50, 69, 70, 77, 86, 88, 90, 91, 96, 97, 98, 99, 100], "thei": [1, 8, 9, 12, 16, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 37, 39, 40, 41, 42, 44, 47, 48, 49, 50, 53, 54, 55, 60, 88, 89], "can": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 49, 50, 51, 53, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 99, 101], "serv": [1, 5, 14, 27, 47, 63, 67], "differ": [1, 3, 6, 8, 9, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 37, 38, 39, 40, 41, 42, 45, 46, 47, 53, 63, 64, 65, 67, 74, 83, 89, 97, 99], "input": [1, 3, 16, 21, 22, 25, 29, 30, 32, 35, 36, 37, 41, 42, 49, 54, 72, 81, 84, 85, 86, 87, 88, 89], "suppli": [1, 22, 29, 34], "compon": [1, 19, 29, 31, 35, 37, 42, 57, 74, 77, 83, 85, 86, 87, 88, 89, 99], "sphinx": [1, 69], "javascript": 1, "do": [1, 5, 7, 8, 9, 14, 16, 17, 18, 19, 20, 22, 24, 25, 26, 27, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 47, 48, 49, 50, 54, 59, 63, 66, 67, 69, 71, 72, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "need": [1, 3, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 32, 35, 36, 37, 40, 41, 42, 45, 46, 47, 49, 51, 53, 54, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "major": [1, 5, 17, 35, 45, 47, 49, 61, 83, 101], "simpl": [1, 6, 11, 18, 20, 21, 24, 27, 28, 29, 30, 37, 40, 41, 42, 50, 53, 57, 62, 63, 64, 77, 83, 86, 93, 94, 95], "markup": [1, 62], "languag": [1, 2, 3, 4, 5, 7, 16, 19, 20, 21, 23, 27, 44, 47, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 70, 72, 73, 83, 84, 85, 88, 90, 101], "format": [1, 4, 7, 13, 27, 29, 30, 32, 34, 35, 37, 39, 40, 41, 42, 46, 47, 62, 63, 64, 65, 66, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 91, 94, 95, 96, 97, 98, 99, 100], "don": [1, 53, 55, 62, 66, 67, 68, 69, 82, 83, 84, 85, 86, 87, 88, 89], "worri": [1, 20, 55, 62], "haven": [1, 18, 61, 62, 83], "us": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 101], "befor": [1, 3, 8, 11, 12, 15, 19, 20, 21, 27, 29, 32, 37, 40, 42, 45, 47, 51, 53, 55, 62, 69, 78, 79, 84, 89], "veri": [1, 20, 24, 26, 28, 30, 32, 34, 37, 40, 41, 42, 44, 45, 47, 53, 60, 61, 62, 63, 65], "easi": [1, 6, 16, 30, 32, 35, 46, 47, 62, 65, 76, 83, 91, 92, 101], "pick": [1, 29, 37, 45, 62], "up": [1, 3, 6, 7, 16, 20, 22, 24, 25, 27, 29, 30, 32, 35, 38, 40, 42, 46, 47, 48, 51, 53, 61, 62, 64, 65, 66, 67, 68, 70, 72, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "python": [1, 5, 7, 18, 47, 63, 64, 65, 80, 90, 93, 94, 95, 97, 98, 99], "base": [1, 5, 6, 7, 20, 23, 27, 29, 30, 32, 34, 35, 36, 40, 42, 44, 49, 53, 55, 63, 64, 65, 66, 67, 72, 74, 76, 77, 80, 81, 82, 83, 84, 86, 88, 89, 93, 94, 95, 97, 99, 101], "rst": 1, "file": [1, 3, 4, 5, 16, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 39, 40, 49, 51, 54, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 96, 97, 98, 99, 100], "It": [1, 2, 5, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 25, 26, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 46, 47, 50, 53, 54, 60, 65, 66, 67, 68, 69, 70, 72, 74, 76, 83, 87, 101], "instal": [1, 4, 7, 20, 22, 43, 44, 45, 47, 51, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "comput": [1, 2, 5, 6, 7, 18, 21, 24, 28, 30, 35, 36, 37, 40, 41, 48, 49, 53, 60, 61, 72, 74, 77, 78, 83, 87, 90, 92, 94, 95, 96, 97, 98, 99, 100], "so": [1, 2, 3, 5, 9, 11, 19, 20, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42, 47, 49, 54, 63, 64, 66, 67, 71, 73, 77, 78, 79, 83, 84], "chang": [1, 9, 19, 20, 22, 26, 27, 28, 29, 30, 32, 34, 36, 37, 40, 42, 50, 53, 55, 57, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89], "preview": [1, 61, 68], "local": [1, 3, 17, 20, 28, 49, 54, 65, 66, 79, 86, 87, 88, 89, 99], "howev": [1, 19, 24, 28, 42, 44, 45, 47, 49, 50, 51, 61, 64, 101], "mandatori": 1, "dure": [1, 5, 30], "process": [1, 16, 20, 21, 23, 24, 27, 30, 32, 37, 39, 40, 41, 45, 46, 47, 60, 63, 70, 78, 87, 88, 94, 96, 99, 101], "below": [1, 9, 21, 22, 28, 29, 37, 40, 41, 49, 50, 53, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "readm": [1, 4, 27, 62, 63, 67, 68, 69, 72, 74, 77, 79, 80, 81, 82, 87, 89], "md": [1, 3, 27, 67, 74, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "setup": [1, 20, 26, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "default": [1, 9, 12, 13, 16, 20, 21, 23, 25, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 46, 47, 49, 50, 54, 57, 63, 68, 70, 74, 76, 80, 84, 85, 86, 87, 89, 101], "branch": [1, 53, 61, 66, 67, 69, 72, 80, 84], "onli": [1, 5, 8, 10, 11, 12, 13, 16, 18, 19, 20, 21, 26, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 48, 50, 53, 54, 55, 60, 65, 68, 70, 72, 76, 77, 80, 81, 87, 88, 89], "ever": [1, 83], "contain": [1, 2, 3, 4, 7, 10, 16, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 47, 49, 50, 54, 61, 98], "result": [1, 3, 9, 10, 11, 16, 19, 20, 21, 23, 25, 27, 50, 54, 67, 70, 72, 73, 80, 81, 84, 86, 87, 88, 89], "autom": [1, 20, 27, 66, 67], "servic": [1, 7, 40, 101], "everi": [1, 16, 26, 27, 29, 30, 35, 37, 45, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "time": [1, 2, 9, 10, 19, 20, 22, 25, 27, 29, 30, 37, 40, 41, 48, 53, 63, 64, 65, 66, 67, 72, 77, 78, 79, 82, 83, 85, 86, 88, 91, 96, 98, 99, 100], "updat": [1, 20, 27, 40, 43, 45, 46, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "push": [1, 45, 67, 82], "store": [1, 17, 20, 21, 23, 29, 30, 38, 40, 42, 49, 50, 51, 55, 81, 82, 89, 91], "gh": 1, "therefor": [1, 9, 12, 18, 20, 28, 29, 35, 36, 37, 40, 42, 50], "upload": [1, 80], "becaus": [1, 19, 20, 23, 25, 26, 27, 29, 30, 32, 35, 36, 37, 39, 40, 42, 44, 48, 50, 57], "automat": [1, 4, 5, 8, 9, 12, 20, 30, 32, 37, 41, 49, 50, 54, 61, 63, 66, 83, 84, 87, 97, 98, 99, 101], "from": [1, 2, 5, 6, 7, 9, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 46, 48, 49, 50, 54, 55, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 99, 101], "made": [1, 4, 11, 16, 22, 23, 25, 29, 54, 63, 66, 67, 78, 80, 83, 85, 88, 89], "take": [1, 13, 20, 21, 26, 27, 28, 29, 30, 35, 36, 37, 38, 42, 54, 58, 60, 61, 80, 81, 82, 83, 89], "follow": [1, 3, 4, 5, 6, 9, 10, 11, 15, 17, 18, 20, 21, 23, 30, 32, 34, 37, 38, 40, 41, 42, 46, 47, 50, 51, 53, 55, 57, 64, 65, 66, 68, 69, 73, 75, 76, 79, 80, 83, 84, 87, 88, 89], "form": [1, 4, 18, 26, 32, 35, 39, 40, 41, 42, 47, 50, 53, 54, 57, 69, 74, 78, 79, 80, 98], "person": [1, 5, 23, 45, 61, 93, 94, 95, 96, 97], "fork": [1, 2, 4, 63, 64, 65, 66, 67, 74, 86], "sync": [1, 38, 79, 89], "name": [1, 3, 4, 16, 19, 20, 21, 23, 24, 25, 26, 27, 46, 49, 50, 53, 54, 55, 63, 64, 65, 67, 68, 69, 74, 78, 81, 82, 83, 84, 85, 86, 88, 89, 90], "should": [1, 3, 4, 6, 9, 11, 13, 16, 17, 18, 19, 20, 23, 26, 27, 28, 29, 30, 34, 35, 36, 37, 39, 40, 41, 42, 47, 50, 51, 54, 64, 69, 101], "concis": [1, 3, 4, 34], "describ": [1, 3, 4, 16, 34, 37, 38, 40, 41, 50, 53, 54, 81], "e": [1, 3, 7, 11, 15, 19, 26, 27, 29, 30, 32, 35, 37, 40, 41, 42, 46, 48, 50, 53, 63, 67, 72, 83, 101], "g": [1, 3, 7, 9, 11, 15, 19, 20, 27, 29, 30, 32, 33, 36, 37, 40, 41, 42, 46, 48, 53, 63, 101], "fix": [1, 12, 29, 32, 49, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 98], "spell": [1, 40, 68, 80, 89], "homepag": 1, "info": [1, 20, 69, 83, 86, 87, 89], "perform": [1, 5, 6, 7, 11, 17, 20, 29, 30, 32, 37, 39, 41, 42, 47, 49, 63, 64, 69, 72, 74, 83, 84, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "modifi": [1, 3, 20, 27, 30, 34, 54, 63, 67, 74, 79, 86, 88], "set": [1, 7, 16, 17, 18, 20, 21, 22, 27, 28, 29, 30, 32, 37, 38, 40, 42, 44, 46, 47, 49, 51, 53, 55, 63, 64, 65, 66, 67, 68, 70, 72, 74, 76, 79, 80, 82, 83, 84, 87, 88, 89, 91, 97, 98, 101], "upstream": [1, 63, 64, 65, 72, 79, 80, 84, 86, 89], "origin": [1, 2, 29, 30, 32, 35, 37, 61, 63, 64, 65, 66], "note": [1, 3, 4, 5, 7, 9, 12, 15, 16, 17, 20, 22, 23, 25, 26, 27, 29, 35, 36, 37, 39, 40, 41, 50, 54, 55, 60, 61, 63, 64, 65, 66, 67, 68, 69, 72, 74, 79, 80, 81, 82, 84, 85, 86, 87, 88], "must": [1, 4, 11, 20, 22, 24, 26, 29, 30, 31, 32, 35, 36, 37, 39, 40, 41, 42, 50, 51, 53, 55, 80, 86, 87, 88, 89], "verifi": [1, 4, 27, 34, 72, 86, 87, 89], "correctli": [1, 20, 27, 51, 79, 80, 89], "render": [1, 5, 35], "expect": [1, 4, 17, 20, 27, 29, 30, 32, 36, 37, 42, 47, 64, 83, 101], "continu": [1, 27, 30, 35, 41, 42, 62, 63, 64, 65, 66, 67, 68, 69, 80, 81, 82, 83, 99], "after": [1, 2, 12, 20, 21, 26, 27, 29, 30, 32, 37, 40, 44, 46, 47, 49, 54, 64, 68, 73, 80, 84, 85, 88, 89], "accordingli": [1, 27, 50], "review": [1, 63, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "other": [1, 2, 3, 4, 5, 7, 11, 16, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 35, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 53, 54, 55, 57, 60, 61, 62, 63, 64, 65, 67, 72, 73, 74, 77, 78, 79, 83, 84, 85, 89, 90, 91, 96, 98, 99, 100, 101], "member": [1, 2, 37, 57, 72, 73, 77, 83], "commun": [1, 2, 4, 5, 6, 7, 34, 44, 59, 60, 61, 62, 65, 66, 67, 71, 78, 80, 81, 83, 86, 90, 96, 99, 101], "who": [1, 27, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "mai": [1, 3, 4, 5, 19, 21, 22, 26, 27, 28, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 47, 48, 50, 53, 61, 76, 89], "interfac": [1, 2, 4, 5, 9, 10, 16, 19, 20, 22, 23, 25, 26, 29, 33, 34, 37, 41, 46, 47, 50, 54, 63, 65, 66, 69, 72, 76, 77, 78, 79, 80, 81, 82, 83, 85, 86, 88, 89, 95, 96, 97, 98, 100, 101], "appli": [1, 6, 24, 29, 30, 32, 35, 41, 42, 46, 60, 69, 70, 71, 72, 75, 80, 83, 86, 87, 90], "reject": 1, "ani": [1, 3, 4, 5, 9, 11, 20, 22, 26, 27, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 47, 48, 49, 50, 53, 54, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 99], "click": [1, 47, 58, 71], "button": [1, 19, 47, 52], "avoid": [1, 8, 9, 16, 19, 20, 27, 32, 69, 72, 80, 81, 83, 84, 85, 87, 88, 89], "have": [1, 3, 4, 5, 6, 9, 11, 12, 13, 16, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "manual": [1, 47, 69, 89], "copi": [1, 9, 17, 22, 29, 30, 32, 37, 38, 39, 41, 42, 51, 84, 88], "back": [1, 5, 18, 29, 32, 34, 37, 41, 74, 86, 89, 97], "again": [1, 8, 12, 20, 21, 26, 27, 28, 29, 42, 63, 64, 65, 66, 79, 80], "If": [1, 3, 4, 6, 11, 15, 20, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 50, 53, 60, 61, 63, 64, 69, 70, 72, 83, 86, 87], "commit": [1, 61, 63, 79, 101], "intend": [1, 3, 30, 99, 101], "edit": [1, 5, 7, 44, 47, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 97], "approv": [1, 80], "usual": [1, 13, 16, 17, 18, 19, 20, 27, 44, 53, 55, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87], "least": [1, 4, 9, 19, 26, 29, 30, 32, 37, 38, 40, 41, 42, 47, 48, 78, 97], "two": [1, 3, 5, 11, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 30, 32, 35, 36, 37, 38, 41, 42, 49, 50, 53, 54, 58, 60, 80, 81, 83, 94, 97], "merg": [1, 4, 30, 34, 37, 39, 42, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 86, 88, 89], "maintain": [1, 2, 5, 26, 27, 42, 69, 70, 73, 79, 80, 83, 86, 90, 101], "point": [1, 4, 15, 17, 19, 20, 27, 29, 31, 32, 34, 35, 36, 37, 39, 40, 41, 42, 50, 66, 69, 70, 89, 91, 97], "publish": [1, 2, 3, 7, 34, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "requir": [1, 3, 4, 8, 9, 12, 13, 16, 17, 18, 20, 22, 26, 27, 28, 29, 30, 32, 37, 38, 39, 40, 41, 42, 53, 54, 64, 65, 68, 69, 74, 87, 101], "public": [1, 7, 10, 13, 16, 19, 26, 27, 34, 37, 39, 41, 50, 54, 57, 63, 72, 79, 83, 85, 87], "avail": [1, 4, 5, 9, 16, 19, 20, 22, 27, 30, 32, 34, 37, 40, 42, 43, 44, 45, 46, 53, 55, 57, 63, 65, 69, 72, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "view": [1, 30, 34, 82], "pr": [1, 37, 41, 64, 65, 66, 67, 68, 69, 72, 74, 76, 78, 80, 85, 86, 88], "pr_id": 1, "where": [1, 8, 18, 19, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 34, 35, 37, 40, 41, 42, 44, 47, 48, 49, 50, 55, 71, 73, 80, 81, 83, 84, 87, 88], "numer": [1, 4, 5, 6, 7, 13, 16, 18, 21, 29, 32, 34, 39, 40, 42, 74, 83, 84, 92, 95, 97, 99], "identifi": [1, 5, 9, 12, 29, 32, 36, 37, 38, 41, 74], "allow": [1, 2, 6, 9, 10, 16, 17, 20, 22, 23, 27, 29, 30, 32, 35, 37, 39, 40, 41, 42, 46, 48, 50, 53, 54, 62, 63, 64, 65, 67, 69, 74, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 95, 101], "directli": [1, 4, 13, 20, 27, 29, 35, 46, 69, 82, 83, 101], "subsequ": [1, 3, 23, 39, 40, 41, 42, 72], "rebuild": [1, 3, 20, 26, 27, 67, 68], "build_preview": 1, "ha": [1, 4, 5, 6, 8, 9, 12, 18, 19, 20, 21, 22, 23, 26, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 48, 50, 53, 54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 76, 77, 79, 80, 83, 84, 85, 86, 87, 88, 101], "been": [1, 4, 5, 6, 20, 21, 29, 30, 37, 38, 41, 42, 45, 48, 49, 50, 60, 61, 63, 64, 65, 66, 67, 71, 72, 79, 80, 83, 86, 87], "successfulli": [1, 23, 79], "delet": [1, 12, 20, 39, 79, 89, 95], "re": [1, 2, 6, 19, 20, 32, 35, 37, 42, 50, 58, 64, 69, 70, 72, 74, 75, 83, 84, 88], "try": [1, 7, 18, 20, 21, 29, 35, 43, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "ad": [1, 3, 5, 16, 19, 20, 27, 29, 32, 36, 39, 42, 50, 53, 57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 98], "random": [1, 4, 32, 35, 83, 90, 91, 92, 94, 95, 96, 97, 98, 100], "paramet": [1, 8, 11, 13, 16, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 50, 53, 54, 55, 65, 74, 77, 80, 88, 89, 91, 94, 95, 96, 97, 98, 99, 100], "end": [1, 5, 8, 9, 10, 11, 12, 13, 16, 17, 19, 20, 21, 22, 24, 25, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 46, 49, 50, 51, 53, 54, 55, 79, 80, 81, 83, 84, 89], "url": [1, 4, 101], "98": [1, 32, 62, 74], "v": [1, 2, 12, 17, 25, 29, 30, 36, 46, 54, 57, 63, 83, 86, 87, 101], "matter": [1, 18, 29, 32, 36, 45], "forc": [1, 32, 47], "deliveri": [1, 80, 81, 82, 83], "network": [1, 94, 99], "version": [1, 4, 5, 19, 20, 22, 26, 27, 28, 32, 33, 34, 40, 46, 47, 48, 51, 63, 64, 65, 68, 70, 72, 74, 76, 77, 79, 80, 81, 82, 83, 84, 85, 88, 89], "instead": [1, 15, 19, 20, 25, 26, 27, 29, 32, 37, 41, 50, 54, 74, 76, 82, 86, 89], "cach": [1, 65, 80], "date": [1, 20, 40, 42, 60, 71, 83, 91, 96], "excerpt": [1, 7], "block": [1, 20, 29, 30, 32, 35, 40, 42, 44, 48, 77, 79, 87, 88, 89, 92, 94, 97, 99], "denot": [1, 37, 57], "tick": [1, 40], "inlin": [1, 88], "program": [1, 2, 3, 4, 5, 7, 14, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 40, 41, 42, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 72, 75, 76, 77, 78, 79, 81, 83, 86, 87, 89, 93, 94, 95, 97, 98, 99, 101], "keyword": [1, 8, 11, 12, 21, 40, 50, 53, 84, 86, 88, 89, 90], "variabl": [1, 8, 12, 16, 18, 21, 23, 27, 28, 29, 30, 31, 33, 34, 35, 36, 38, 39, 40, 42, 49, 50, 51, 52, 53, 54, 57, 65, 67, 70, 72, 74, 76, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 91, 97, 99, 101], "than": [1, 4, 9, 16, 20, 21, 22, 27, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 47, 49, 53, 55, 72, 79, 83, 89], "one": [1, 3, 4, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 53, 55, 61, 64, 65, 68, 72, 73, 76, 79, 83, 84, 85, 88, 89, 97], "sentenc": [1, 4, 65], "per": [1, 3, 21, 22, 23, 26, 27, 32, 39, 40, 87], "line": [1, 3, 12, 16, 19, 20, 21, 26, 27, 32, 34, 35, 37, 39, 40, 51, 62, 63, 67, 68, 79, 83, 84, 85, 88, 94, 96, 101], "break": [1, 3, 16, 32, 35], "long": [1, 2, 11, 13, 16, 26, 27, 28, 32, 35, 37, 49, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "across": [1, 3, 32, 76, 83, 95, 101], "multipl": [1, 3, 13, 15, 27, 29, 30, 34, 37, 42, 44, 46, 53, 55, 65, 72, 79, 80, 81, 85], "import": [1, 10, 13, 15, 16, 17, 19, 20, 23, 25, 26, 30, 31, 35, 47, 48, 50, 54, 65, 68, 72, 76, 88, 89], "larg": [1, 5, 6, 8, 18, 20, 23, 26, 27, 35, 37, 40, 41, 44, 64, 83, 84, 90, 97, 99], "diff": [1, 84, 85], "off": [1, 21, 30, 37, 40, 41, 42, 65, 68, 79, 84, 87, 89, 99], "hyperlink": [1, 3], "tab": [1, 20, 32, 78, 79, 80, 81, 86, 88], "On": [1, 7, 18, 22, 26, 28, 30, 37, 46, 51, 53, 61], "suffix": [1, 13, 20, 55, 81, 87, 89], "give": [1, 13, 20, 24, 25, 27, 29, 35, 48, 52, 62, 64, 72, 83, 86, 96, 101], "prior": [1, 8, 12, 38, 53, 54], "lead": [1, 5, 8, 20, 22, 23, 30, 32, 37, 40, 42, 55, 60, 83, 88], "them": [1, 5, 6, 13, 16, 20, 22, 25, 27, 30, 32, 35, 40, 43, 45, 47, 50, 54, 60, 61, 63, 64, 65, 70, 72, 78, 81, 91, 97, 101], "while": [1, 12, 15, 16, 17, 18, 20, 23, 26, 27, 37, 38, 43, 46, 47, 49, 55, 88, 89, 101], "keep": [1, 16, 18, 25, 27, 29, 30, 36, 42, 48, 55, 85, 88], "previou": [1, 5, 8, 12, 19, 20, 22, 32, 53, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "exampl": [1, 2, 3, 4, 7, 9, 10, 11, 13, 15, 16, 17, 18, 20, 21, 24, 25, 26, 27, 34, 44, 46, 47, 49, 50, 51, 52, 53, 54, 55, 61, 62, 65, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 92, 101], "href": [1, 20], "group": [1, 3, 23, 27, 29, 68, 77, 78, 79, 83, 86, 88], "target": [1, 5, 17, 19, 20, 27, 29, 31, 32, 37, 39, 41, 57, 58, 67, 68, 70, 72, 77, 79, 80, 81, 83, 85, 86, 87, 88, 89, 101], "_blank": [1, 20], "rel": [1, 6, 20, 29, 35, 36, 41, 88, 101], "noopen": [1, 20], "part": [1, 5, 16, 20, 21, 26, 27, 29, 30, 35, 36, 37, 40, 42, 49, 50, 51, 55, 64, 69, 81, 83, 85, 101], "prefix": [1, 16, 20, 26, 82, 84, 85, 86, 87, 88, 89], "pathto": 1, "here": [1, 6, 9, 10, 13, 16, 18, 19, 20, 22, 25, 26, 27, 28, 29, 34, 39, 40, 42, 43, 44, 45, 46, 47, 50, 51, 53, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], "explan": [1, 53], "improv": [1, 2, 6, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "aesthet": 1, "otherwis": [1, 21, 26, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 47, 65, 66, 67, 68, 69], "monoton": 1, "passag": 1, "draw": 1, "attent": [1, 20, 30], "head": [1, 74, 76, 83, 84, 88], "kei": [1, 2, 49, 65, 72, 74, 83], "three": [1, 4, 11, 17, 18, 19, 27, 29, 30, 40, 46, 60, 72, 76, 97, 99], "design": [1, 3, 6, 7, 27, 29, 30, 32, 36, 37, 38, 40, 41, 42, 60, 63, 64, 83, 88, 92, 94, 95, 97, 99, 101], "mit": [1, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "licens": [1, 4, 27, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 74], "font": 1, "awesom": 1, "cc": [1, 74], "BY": 1, "0": [1, 5, 8, 10, 12, 13, 16, 19, 20, 21, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 48, 49, 50, 51, 53, 54, 55, 57, 68, 72, 77, 78, 80, 81, 82, 83, 84, 86, 87, 88, 93, 94, 101], "class": [1, 5, 19, 29, 39, 50, 67, 72, 74, 76, 77, 78, 79, 82, 83, 84, 87, 88, 89, 90, 95, 96, 98, 100], "fa": 1, "circl": [1, 35, 42], "direct": [1, 5, 24, 26, 29, 32, 36, 37, 41, 42, 45, 60, 65, 66, 67, 68, 69, 72, 74, 79, 81, 85, 87, 88, 97, 99, 101], "octicon": 1, "1em": 1, "sd": 1, "visit": [1, 77, 78, 79, 80, 84, 85, 88], "respect": [1, 8, 16, 20, 27, 29, 40, 42, 43, 49, 84, 85, 88], "brows": [1, 4, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90], "sometim": [1, 19, 20, 23, 37], "displai": [1, 3, 4, 32, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "lengthi": 1, "toc": [1, 3, 72], "tree": [1, 23, 72, 75, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 91, 96, 98, 100, 101], "current": [1, 3, 5, 27, 29, 30, 34, 38, 39, 40, 42, 48, 50, 52, 53, 59, 60, 61, 63, 64, 80, 83, 84, 85, 101], "wherea": [1, 32], "method": [1, 7, 19, 26, 29, 37, 39, 41, 68, 76, 79, 81, 88, 89, 92, 94, 97, 99], "entir": [1, 3, 22, 26, 27, 29, 30, 32, 37, 40, 41], "directori": [1, 3, 20, 22, 23, 26, 27, 28, 63, 66, 67, 70, 72, 76, 77, 80, 81, 83, 84, 85, 88, 95, 101], "For": [1, 3, 9, 13, 17, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 40, 41, 42, 44, 45, 46, 47, 49, 50, 60, 61, 63, 68, 77, 78, 79, 80, 83, 93, 94, 95], "toctre": [1, 3], "hidden": [1, 3, 85, 86], "array_index": 1, "guidelin": [1, 3, 18, 34, 65, 68, 69, 72, 74, 76, 81, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "layout": [1, 9], "space": [1, 4, 5, 18, 20, 23, 27, 32, 34, 35, 37, 40, 49, 81, 83, 85, 86, 87, 88, 89, 99, 100], "indent": [1, 20, 47, 53, 98], "bodi": [1, 7, 16, 22, 53, 54, 97, 99], "unit": [1, 12, 16, 35, 39, 42, 54, 74, 84, 86, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 100], "statement": [1, 16, 21, 25, 27, 29, 30, 32, 39, 42, 49, 50, 54, 55, 68, 76, 77, 79, 80, 82, 84, 86, 87, 88, 89], "level": [1, 3, 4, 5, 7, 20, 24, 25, 34, 37, 41, 42, 62, 67, 68, 77, 78, 83, 93, 94, 101], "modul": [1, 2, 4, 5, 10, 13, 18, 20, 21, 22, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39, 41, 42, 50, 55, 57, 60, 61, 62, 63, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 99, 100, 101], "type": [1, 3, 4, 6, 9, 10, 16, 20, 21, 24, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 46, 47, 49, 52, 54, 55, 57, 62, 63, 64, 65, 66, 67, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 98, 99], "limit": [1, 8, 16, 20, 30, 33, 35, 36, 42, 69, 74, 83, 88, 89], "length": [1, 3, 12, 13, 29, 30, 31, 32, 33, 35, 37, 40, 42, 49, 80, 81, 83, 84, 86, 88, 89, 94, 95, 96, 97, 98, 99, 100], "90": [1, 5, 7, 20, 27, 32, 35, 39, 42, 51, 53, 61, 78], "charact": [1, 12, 16, 20, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 50, 55, 57, 65, 66, 67, 70, 72, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "These": [1, 6, 21, 22, 25, 26, 30, 37, 40, 41, 42, 47, 48, 49, 50, 53], "consider": [1, 36], "readabl": [1, 18, 20, 21, 24, 53, 77], "easier": [1, 2, 29, 30, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "devic": [1, 4, 42, 86, 90], "smaller": [1, 5, 20, 21, 29, 36, 37, 38, 64], "viewport": 1, "width": [1, 29], "m": [1, 7, 9, 29, 30, 32, 37, 40, 41, 50, 54, 80, 97, 99], "implicit": [1, 9, 10, 13, 16, 19, 20, 22, 25, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 49, 50, 54, 55, 69, 72, 76, 84, 86, 88, 89], "none": [1, 4, 7, 10, 13, 16, 19, 20, 22, 25, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 53, 54, 55, 72, 88], "privat": [1, 10, 16, 37, 39, 41, 50, 54, 57, 66, 69, 72, 82, 84, 86, 88], "a_t": 1, "integ": [1, 8, 9, 11, 12, 13, 16, 17, 18, 19, 25, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 53, 54, 55, 57, 65, 72, 74, 80, 81, 83, 84, 85, 86, 88, 89, 91, 97], "val": [1, 35, 38, 42, 49], "procedur": [1, 4, 5, 6, 8, 9, 10, 11, 12, 16, 17, 19, 26, 29, 30, 34, 37, 39, 40, 41, 42, 54, 55, 57, 61, 63, 69, 72, 74, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 97, 101], "func": [1, 10, 19, 31, 39, 84], "subroutin": [1, 6, 8, 9, 10, 11, 16, 17, 18, 19, 21, 22, 26, 29, 30, 31, 32, 35, 37, 38, 39, 40, 41, 42, 49, 50, 57, 63, 77, 78, 79, 80, 82, 83, 86, 88, 96, 97, 99], "self": [1, 3, 34, 39, 50, 54], "intent": [1, 8, 9, 10, 11, 16, 17, 19, 22, 25, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 53, 54, 57, 69, 89], "print": [1, 7, 8, 9, 10, 11, 12, 13, 15, 19, 20, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 51, 53, 54, 55, 60, 67, 70, 77, 83, 84, 86, 87, 89], "function": [1, 2, 4, 6, 9, 10, 11, 12, 16, 18, 20, 21, 22, 23, 25, 26, 27, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 49, 50, 52, 60, 61, 63, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99, 100, 101], "even": [1, 18, 19, 24, 26, 27, 28, 29, 30, 32, 35, 36, 37, 40, 41, 42, 44, 47, 51, 53, 81, 88, 89], "would": [1, 8, 9, 17, 19, 20, 22, 27, 29, 30, 32, 35, 36, 37, 41, 42, 50, 55, 79, 101], "put": [1, 22, 23, 25, 26, 27, 28, 29, 30, 35, 40], "larger": [1, 16, 20, 27, 29, 35, 37, 38, 40, 42, 64, 83, 86], "context": [1, 8, 15, 18, 19, 27, 37, 41, 42, 76], "i1": [1, 13, 37, 41], "ye": [1, 20, 32, 42, 57, 89], "i2": [1, 13, 29, 30, 36, 37, 41], "vertic": [1, 35], "align": [1, 30, 72, 82], "mainten": [1, 20, 97], "burden": [1, 22], "case": [1, 9, 12, 16, 20, 21, 22, 26, 27, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42, 48, 50, 53, 55, 69, 72, 74, 80, 81, 82, 83, 84, 86, 87, 88, 89, 98], "valid": [1, 4, 27, 29, 30, 32, 35, 36, 37, 42, 46, 64, 65, 66, 67, 80, 87, 95], "leav": [1, 21, 22, 26, 30], "less": [1, 18, 23, 29, 30, 32, 35, 37, 40, 42, 47, 53, 79], "syntax": [1, 3, 6, 7, 14, 21, 27, 29, 32, 42, 47, 50, 52, 53, 55, 57, 63, 75, 76, 77, 89, 101], "highlight": [1, 16, 47, 52, 70, 72, 77, 89], "red": 1, "box": [1, 24, 29, 37, 82, 86, 88, 90], "feel": [1, 2, 20, 27, 47], "omit": [1, 4, 29, 37, 41, 50], "express": [1, 6, 7, 16, 24, 27, 29, 30, 31, 32, 35, 37, 38, 41, 42, 49, 50, 53, 54, 66, 67, 76, 77, 78, 79, 82, 84, 85, 86, 87, 88, 89], "includ": [1, 2, 3, 4, 5, 6, 7, 13, 20, 21, 27, 29, 33, 34, 36, 37, 40, 41, 42, 46, 47, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99, 100, 101], "whitespac": [1, 32, 40], "oper": [1, 5, 6, 15, 16, 17, 20, 22, 24, 26, 28, 29, 30, 32, 35, 37, 38, 41, 42, 45, 47, 49, 55, 61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 96, 101], "y1": 1, "b": [1, 7, 10, 12, 13, 19, 20, 26, 27, 29, 30, 31, 32, 37, 38, 39, 41, 42, 89, 97], "y2": 1, "c": [1, 5, 7, 9, 13, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 39, 40, 41, 42, 44, 46, 50, 51, 55, 60, 63, 64, 65, 74, 77, 78, 79, 80, 81, 83, 84, 85, 87, 88, 89, 92, 93, 94, 95, 97, 98, 101], "d": [1, 7, 19, 27, 29, 30, 32, 35, 37, 41, 42, 50, 62, 63, 64, 69, 70, 72, 86, 87, 88, 94, 97, 99], "y3": 1, "y4": 1, "s3": 1, "s1": [1, 37, 41], "s2": [1, 37, 41], "comma": [1, 27, 86, 87], "except": [1, 20, 21, 25, 27, 29, 30, 32, 37, 39, 40, 42, 85, 88, 89], "when": [1, 5, 11, 16, 17, 18, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 53, 54, 55, 64, 68, 72, 73, 74, 77, 79, 82, 83, 84, 85, 86, 87, 88, 89], "short": [1, 3, 13, 18, 20, 29, 32, 40, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "a2": [1, 29, 37], "10": [1, 8, 9, 11, 13, 20, 28, 29, 30, 32, 33, 35, 36, 37, 39, 40, 41, 42, 46, 49, 53, 54, 55, 64, 65, 66, 68, 69, 70, 72, 79, 85, 87, 99], "j": [1, 7, 17, 19, 23, 27, 29, 30, 32, 33, 35, 36, 37, 41, 42, 53, 72, 82, 83, 88, 89, 94], "b2": 1, "long_i_nam": 1, "long_j_nam": 1, "b3": 1, "call": [1, 3, 5, 8, 9, 19, 20, 22, 23, 25, 26, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 41, 42, 49, 50, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94], "some_subroutin": 1, "an_opt": 1, "fals": [1, 29, 30, 31, 32, 37, 38, 39, 40, 41, 42, 53, 55, 89], "situat": [1, 23, 25], "besid": [1, 22, 26, 28, 83], "white": [1, 40, 86, 100], "alias": [1, 42, 54, 88], "intrins": [1, 3, 7, 8, 9, 13, 29, 30, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 49, 54, 55, 69, 72, 74, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 98], "iso_c_bind": [1, 19, 31, 50, 55, 79, 89, 101], "sp": [1, 13, 16, 29, 30, 32, 35, 36, 37, 55], "c_float": [1, 31, 55], "dp": [1, 8, 9, 10, 11, 13, 15, 16, 17, 19, 29, 35, 36, 37, 42, 55], "c_doubl": [1, 55], "string": [1, 4, 20, 27, 29, 30, 32, 33, 37, 40, 42, 65, 68, 69, 70, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 94, 95, 96, 97, 98, 99], "concatent": 1, "hello": [1, 21, 24, 42, 45, 52, 55, 60, 61, 79], "world": [1, 5, 6, 18, 27, 28, 42, 45, 52, 55, 60, 61, 79, 83], "access": [1, 4, 5, 8, 12, 17, 20, 22, 23, 34, 39, 42, 46, 49, 50, 54, 67, 72, 79, 80, 81, 82, 84, 85, 86, 87, 89, 95, 101], "attribut": [1, 8, 22, 26, 31, 32, 34, 39, 41, 49, 50, 54, 55, 60, 65, 69, 72, 74, 76, 81, 82, 84, 88], "deriv": [1, 7, 16, 29, 30, 31, 42, 62, 63, 64, 65, 66, 67, 69, 72, 74, 80, 83, 84, 86, 87, 88, 89, 91, 97, 98], "x": [1, 7, 10, 11, 16, 19, 22, 25, 26, 27, 29, 30, 31, 32, 35, 36, 37, 39, 41, 42, 50, 67, 78, 80, 81, 86, 88, 93, 94], "calc_someth": 1, "pass": [1, 8, 9, 10, 17, 19, 22, 29, 32, 33, 35, 37, 38, 39, 40, 41, 42, 50, 51, 54, 57, 72, 74, 81, 82, 84, 85, 86, 87, 88, 89, 101], "argument": [1, 8, 9, 10, 11, 16, 19, 22, 25, 27, 29, 30, 31, 32, 35, 36, 38, 39, 40, 42, 50, 54, 57, 60, 62, 69, 74, 75, 78, 79, 80, 82, 83, 84, 86, 87, 88, 89, 96, 101], "sr": 1, "t_point": 1, "y": [1, 10, 11, 16, 19, 29, 32, 35, 36, 37, 39, 42, 88], "len": [1, 12, 16, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 49, 50, 69, 80, 84, 87, 88, 89], "allocat": [1, 9, 16, 29, 30, 31, 32, 35, 37, 38, 39, 40, 41, 42, 50, 57, 75, 77, 78, 79, 83, 84, 85, 86, 87, 88, 89], "capit": 1, "first": [1, 3, 11, 12, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 32, 35, 37, 39, 41, 42, 45, 46, 49, 51, 53, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 81, 83, 99], "letter": [1, 32, 42, 55], "trail": [1, 3, 20, 27, 30, 32, 40, 42], "consist": [1, 18, 21, 23, 28, 30, 32, 55, 67, 80, 84, 88], "word": [1, 7, 18, 21, 27, 29, 32, 37, 41, 68, 72], "phrase": 1, "meter": 1, "similar": [1, 4, 9, 20, 27, 29, 30, 32, 35, 42, 46, 47, 54, 55, 63, 101], "those": [1, 9, 20, 27, 29, 37, 40, 41, 42, 43, 44, 45, 46, 48], "dftb": [1, 66, 99], "oppos": [1, 13, 18, 19, 49], "titl": [1, 2, 3, 29, 37, 41, 81, 83, 84], "emphasi": [1, 99], "_emphasis_": 1, "ital": 1, "introduc": [1, 9, 20, 27, 50, 51, 55, 72], "strong": [1, 37, 42], "bold": [1, 52], "within": [1, 3, 4, 16, 28, 29, 30, 32, 36, 37, 39, 40, 41, 44, 50, 53, 54, 101], "paragraph": [1, 32], "admonit": 1, "asid": 1, "tip": [1, 20, 83], "appropri": [1, 4, 22, 30, 42, 79], "extra": [1, 20, 25, 27, 29, 42, 67, 79, 84, 88, 89], "might": [1, 20, 25, 26, 27, 30, 36, 39, 40, 41, 42, 47], "appear": [1, 3, 23, 26, 29, 30, 32, 37, 39, 40, 41, 42, 50, 85, 88], "footnot": 1, "about": [1, 2, 6, 15, 20, 21, 22, 24, 25, 27, 30, 34, 35, 40, 43, 46, 55, 57, 58, 59, 60, 61, 63, 68, 69, 72, 74, 77, 78, 79, 80, 83, 85, 86, 87, 89], "best": [1, 5, 6, 7, 19, 20, 74, 76, 77, 78, 79, 80, 81, 83], "importr": 1, "warn": [1, 29, 33, 78, 80, 81, 82, 84, 85, 86, 87, 88, 89], "prefer": [1, 9, 10, 16, 18, 32, 42, 88], "oxford": [1, 7], "clear": [1, 18, 30, 32, 46], "fast": [1, 2, 5, 6, 27, 65, 80, 83, 87, 89, 94, 97, 99], "fun": [1, 71, 83], "fame": 1, "late": [2, 83], "2019": [2, 7, 44, 83], "agre": [2, 4, 34, 63, 96], "upon": [2, 40, 79, 80, 81, 82, 84, 85, 86, 87, 96], "collect": [2, 3, 5, 6, 7, 14, 21, 26, 34, 38, 46, 51, 54, 57, 83, 91, 93, 94, 95, 96, 97, 99], "wide": [2, 83], "rang": [2, 5, 13, 25, 29, 30, 32, 34, 35, 37, 40, 41, 42, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "sort": [2, 24, 26, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 95, 96, 98, 100], "search": [2, 4, 27, 28, 32, 36, 46, 47, 63, 68, 69, 72, 73, 77, 83, 90, 91, 96, 98, 99, 100, 101], "linear": [2, 4, 79, 90, 91, 92, 94, 95, 96, 98, 99, 100], "algebra": [2, 4, 37, 42, 90, 91, 94, 95, 96, 98, 99, 100], "uniti": [2, 17, 29], "fourier": [2, 83, 94, 97, 99], "transform": [2, 5, 24, 37, 41, 74, 81, 83, 84, 88, 89, 94, 97, 98, 99], "find": [2, 4, 9, 20, 21, 22, 23, 27, 28, 29, 32, 35, 36, 37, 41, 43, 47, 48, 59, 63, 64, 67, 74, 76, 77, 87, 90, 99, 101], "Its": [2, 31, 32, 35, 36, 39, 40, 41, 42, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "goal": [2, 27, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "programm": [2, 7, 14, 21, 22, 24, 34, 44, 45, 53, 83], "doe": [2, 8, 11, 19, 20, 22, 25, 29, 30, 31, 32, 35, 36, 37, 39, 40, 41, 42, 50, 53, 54, 60, 61, 62, 63, 64, 65, 66, 67], "run": [2, 3, 5, 6, 9, 19, 20, 21, 22, 24, 25, 26, 27, 33, 35, 40, 46, 47, 48, 49, 51, 55, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 78, 83, 85, 86, 94, 101], "execut": [2, 4, 5, 7, 20, 21, 22, 24, 25, 26, 27, 28, 38, 39, 40, 42, 46, 51, 53, 54, 60, 62, 65, 66, 67, 72, 78, 81, 87, 88, 89, 94, 101], "distribut": [2, 6, 28, 35, 39, 46, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 99], "model": [2, 5, 34, 42, 63, 68, 70, 72, 83, 88, 89, 97, 99], "rust": [2, 68, 81, 83], "cargo": [2, 101], "familiar": [2, 14, 27, 37, 46], "tool": [2, 5, 6, 22, 26, 27, 28, 40, 44, 45, 46, 48, 59, 60, 63, 72, 83, 86, 90, 93, 94, 95, 96, 97, 98, 99, 100, 101], "home": [2, 20, 32, 40, 60], "term": [2, 4, 34, 35, 37, 41, 46, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "vision": [2, 83], "nurtur": [2, 83], "grow": [2, 83], "ecosystem": [2, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "modern": [2, 5, 7, 14, 16, 42, 46, 47, 50, 51, 54, 55, 63, 83, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98, 99], "applic": [2, 4, 5, 6, 7, 8, 13, 16, 17, 33, 40, 44, 46, 58, 60, 65, 69, 72, 75, 83, 86, 87, 90, 96, 97, 101], "over": [2, 5, 6, 21, 23, 27, 28, 35, 37, 44, 60, 61, 65, 68, 86, 88], "crucial": 2, "organ": [2, 58, 63, 70, 71, 72, 74, 83, 86, 88, 101], "ensur": [2, 4, 20, 27, 36, 40, 42, 51, 80, 86, 88, 89], "sustain": 2, "visual": [2, 5, 20, 29, 30, 44, 47, 48, 65, 85, 88], "studio": [2, 5, 20, 44, 47, 48, 85, 88], "rich": [2, 7, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "extens": [2, 3, 4, 5, 7, 19, 20, 21, 23, 26, 32, 34, 39, 47, 50, 51, 54, 72, 74, 77, 80, 81, 84, 85, 86, 87, 88, 89], "miguel": 2, "carvaj": 2, "gianni": 2, "nikitea": 2, "earli": [2, 6, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 99], "2022": [2, 37, 83], "integr": [2, 5, 10, 16, 18, 19, 20, 26, 37, 44, 45, 47, 57, 69, 79, 80, 83, 89, 90, 92, 94, 95, 96, 97, 99], "marketplac": [2, 47], "server": [2, 5, 47, 48, 92, 94, 101], "archiv": [2, 68, 74, 76, 77, 78, 79, 80, 81, 82, 83], "quickli": [2, 20], "diverg": 2, "codebas": [2, 83], "In": [2, 3, 7, 8, 9, 11, 12, 13, 17, 18, 19, 20, 21, 22, 24, 26, 27, 29, 30, 32, 35, 36, 37, 40, 41, 42, 43, 45, 46, 47, 50, 51, 53, 54, 55, 60, 61, 63, 64, 65, 66, 67, 68, 73, 80, 83, 101], "april": [2, 34, 58, 60, 61, 73, 74, 86, 88], "paper": [2, 70, 72, 77, 81, 86, 87], "scienc": [2, 6, 7, 83, 87, 94], "engin": [2, 5, 6, 7, 60, 83, 87], "state": [2, 4, 20, 35, 39, 40, 53, 59, 60, 83, 85, 87, 99], "overview": [2, 7, 52, 62], "focus": [2, 60, 61, 81], "ongo": [2, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 82, 84, 85], "foster": [2, 7], "onlin": [2, 4, 5, 7, 20, 44, 46, 48, 61, 62, 63, 72, 74, 86], "cover": [3, 4, 20, 34, 50, 89, 99], "guidanc": [3, 4], "mostli": [3, 6], "particular": [3, 19, 21, 23, 26, 29, 30, 32, 38, 40, 50, 51, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "There": [3, 5, 6, 11, 16, 19, 20, 25, 26, 27, 30, 37, 39, 40, 41, 42, 45, 46, 48, 49, 51, 53, 55, 57, 60, 61, 63, 64, 68, 69, 71, 83, 101], "choic": [3, 18, 20, 24, 29, 45, 46, 47], "consid": [3, 15, 17, 20, 22, 24, 26, 27, 29, 30, 35, 39, 42, 47, 50, 55, 70], "tabl": [3, 16, 30, 67, 74, 84, 88, 90, 91], "navig": [3, 4, 16, 35, 47, 52, 61], "link": [3, 19, 20, 21, 26, 27, 28, 34, 43, 46, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 75, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91], "inpag": 3, "right": [3, 15, 18, 19, 20, 22, 25, 26, 27, 28, 30, 32, 35, 37, 40, 41, 49, 53, 86], "hand": [3, 6, 18, 20, 27, 42, 53, 58, 66, 97, 99], "side": [3, 11, 35, 42, 50, 80], "sidebar": 3, "left": [3, 15, 17, 29, 30, 32, 37, 40, 41, 42, 47, 52, 53, 88], "show": [3, 19, 20, 30, 32, 35, 40, 49, 50, 65, 67, 68, 70, 83, 84, 88, 89], "simpler": [3, 54], "brief": [3, 34], "topic": [3, 7, 14, 65, 70, 72, 83, 90], "eventu": 3, "subsum": 3, "comprehens": [3, 43, 46, 47, 48, 61, 62, 63, 64, 98], "subtop": 3, "rest": [3, 18, 81, 89], "split": [3, 40, 66, 67, 68, 72, 79, 85, 86, 90, 95, 100], "step": [3, 4, 18, 20, 21, 25, 26, 27, 28, 32, 101], "yml": [3, 4, 79, 80], "name_of_minibook": 3, "file_io": 3, "append": [3, 12, 20, 29, 30, 32, 49], "quickstart": [3, 7, 45, 50, 61, 62, 63, 68, 72, 76, 77], "best_practic": 3, "os_setup": 3, "building_program": [3, 88], "filenam": [3, 27, 74], "replac": [3, 12, 20, 21, 26, 29, 39, 46, 53, 63, 64, 72, 79, 80, 81, 84, 88, 89, 100], "exclud": [3, 66], "also": [3, 4, 5, 6, 8, 9, 10, 13, 16, 19, 20, 21, 22, 25, 26, 27, 28, 43, 50, 53, 60, 61, 64, 68, 69, 72, 74, 81, 83, 84, 86, 101], "slash": 3, "header": [3, 69, 81, 85], "NOT": [3, 29, 30, 32, 39, 55], "permalink": 3, "now": [3, 19, 20, 27, 28, 29, 32, 37, 40, 44, 50, 53, 54, 59, 61, 62, 63, 64, 65, 66, 67, 70, 72, 76, 78, 79, 82, 83, 86, 89], "fill": [3, 29, 30, 37, 40, 41, 42, 85, 88], "kramdown": 3, "logic": [3, 12, 29, 30, 31, 32, 34, 38, 39, 40, 46, 55, 72, 74, 77, 81, 82, 83, 85, 86, 87, 89], "6": [3, 10, 13, 15, 19, 20, 29, 30, 32, 35, 36, 37, 40, 41, 42, 49, 58, 67, 68, 72, 79, 83, 94], "sure": [3, 15, 20, 30, 32, 42], "blank": [3, 32, 37, 40, 41, 42, 85], "To": [3, 4, 8, 9, 12, 13, 20, 21, 23, 24, 25, 26, 27, 28, 29, 32, 35, 46, 48, 51, 53, 54, 83, 86, 87], "datafil": 3, "under": [3, 4, 5, 6, 26, 34, 44, 46, 47, 72, 75, 78, 79, 88, 89], "field": [3, 4, 29, 30, 40, 82, 84, 95, 97, 99], "descript": [3, 4, 7, 18, 20, 34, 53, 55, 72, 79, 80, 82], "categori": [3, 4, 47, 90], "isn": 3, "briefli": [3, 9, 16, 20, 27], "summaris": [3, 82], "match": [3, 4, 16, 20, 27, 29, 30, 32, 42, 47, 50, 63, 77, 89, 101], "list": [3, 4, 5, 6, 16, 19, 20, 27, 28, 29, 30, 32, 37, 41, 42, 43, 44, 45, 47, 49, 50, 54, 55, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "top": [3, 47, 62, 83, 89], "exactli": [3, 19, 37, 40, 41, 73], "output": [3, 5, 11, 20, 21, 23, 25, 27, 28, 29, 30, 32, 35, 37, 40, 42, 49, 51, 61, 68, 69, 70, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "save": [3, 16, 20, 26, 29, 51, 55, 72, 74, 82, 84, 89, 95], "fortran_packag": 3, "py": [3, 89], "success": [3, 22, 37, 38, 39, 40], "_learn": 3, "complet": [3, 4, 5, 20, 32, 37, 40, 41, 44, 47, 48, 66, 67, 68, 69, 70, 72, 74, 76, 77, 79, 80, 88, 99], "coarrai": [3, 5, 6, 7, 38, 39, 46, 68, 74, 76, 88, 92, 96, 97], "file1": [3, 26], "file2": [3, 26], "popul": [3, 30], "remaind": [3, 29, 37], "introduct": [3, 7, 20, 66, 67, 68, 69], "summari": [3, 66, 70, 72], "concept": [3, 7, 27, 40, 42, 52, 91, 96, 98, 100], "prerequisit": 3, "relat": [3, 6, 30, 32, 34, 35, 39, 40, 42, 50, 53, 61, 72, 82, 83, 84, 85, 86, 87, 88, 89, 90, 96, 101], "third": [3, 17, 32, 63, 101], "parti": [3, 101], "resourc": [3, 7, 24, 34, 61, 72, 74, 81, 83, 101], "page1": 3, "page2": 3, "page3": 3, "parallel": [3, 5, 6, 7, 27, 34, 40, 46, 53, 63, 72, 81, 83, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100], "background": [3, 40], "codimens": [3, 38, 50], "relev": [4, 29], "exist": [4, 6, 12, 20, 26, 30, 40, 42, 50, 53, 62, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "purpos": [4, 13, 16, 18, 19, 20, 27, 34, 40, 47, 51, 94, 96, 97], "sole": 4, "toward": [4, 37, 42, 44, 45, 63, 65, 66, 72, 74, 75, 83, 101], "softwar": [4, 5, 6, 7, 16, 21, 34, 44, 45, 46, 51, 60, 75, 78, 83, 94, 97, 99], "matur": [4, 5, 6, 43, 83], "primari": 4, "shall": [4, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42], "No": [4, 20, 26, 29, 30, 37, 41, 60, 61, 62, 63, 64, 65, 66], "partial": [4, 5, 86, 97], "accept": [4, 19, 22, 30, 42, 66, 67, 70, 74, 75, 80, 85, 86, 87, 88, 89], "star": [4, 29, 78], "freeli": [4, 22], "download": [4, 46, 48, 64], "clearli": [4, 18, 53], "uniqu": [4, 35, 36, 44, 47, 48, 91], "minor": [4, 47, 57, 60, 62, 65, 66, 67, 68, 69, 72, 74, 77, 79, 81, 82, 84, 86, 89], "revis": [4, 6, 70, 72, 82, 84], "some": [4, 5, 11, 13, 18, 19, 20, 21, 22, 23, 27, 29, 30, 32, 37, 40, 42, 44, 48, 57, 61, 62, 63, 69, 73, 80, 82, 83, 84, 85, 86, 87, 88, 89, 98, 101], "land": 4, "page": [4, 7, 20, 34, 37, 41, 46, 47, 52, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "aim": [4, 58, 63, 64, 73, 83, 101], "ideal": 4, "support": [4, 5, 8, 20, 21, 23, 27, 29, 30, 32, 35, 36, 37, 38, 40, 41, 42, 44, 47, 48, 49, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97, 98, 99, 100], "detail": [4, 20, 21, 23, 24, 25, 26, 27, 28, 34, 40, 43, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "submit": [4, 58, 60, 61, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "portabl": [4, 5, 20, 37, 41, 87, 88, 89, 91, 95, 97, 101], "proprietari": [4, 6], "confirm": 4, "meet": [4, 40, 42, 45, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "minimum": [4, 16, 29, 35, 36, 37, 41, 42, 44, 65, 80, 83], "templat": [4, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 91, 98], "At": [4, 28, 29, 37, 41, 42, 47, 83], "against": [4, 20, 30, 86], "abov": [4, 5, 11, 18, 20, 21, 22, 26, 27, 28, 32, 43, 46, 47, 50, 53, 55, 83, 90], "signific": [4, 5, 13, 27, 30, 32, 36, 37, 40, 42, 61, 67, 83, 88], "object": [4, 6, 7, 9, 16, 18, 20, 21, 23, 26, 27, 29, 30, 31, 37, 39, 41, 42, 50, 54, 68, 72, 74, 76, 77, 78, 79, 80, 85, 87, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "package_index": 4, "simpli": [4, 9, 13, 23, 26, 28, 30, 35, 37, 53, 63], "order": [4, 9, 13, 15, 17, 20, 23, 27, 29, 30, 32, 35, 37, 39, 40, 41, 42, 44, 47, 49, 50, 53, 55, 60, 74, 79, 80, 84, 85, 89, 99], "high": [4, 5, 6, 7, 9, 20, 24, 30, 37, 72, 74, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], "mere": [4, 28, 36], "aid": 4, "package_nam": 4, "github_us": 4, "repository_nam": 4, "single_line_descript": 4, "category1": 4, "category2": 4, "tag": [4, 27, 61, 72, 80, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "tag1": 4, "tag2": 4, "tag3": 4, "util": [4, 5, 26, 28, 72, 81, 83, 85, 86, 89, 94, 95, 96, 97, 98, 99, 100, 101], "error": [4, 6, 9, 11, 12, 16, 19, 20, 21, 27, 28, 29, 33, 35, 38, 39, 40, 41, 42, 50, 54, 55, 63, 64, 65, 67, 68, 72, 74, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 96, 97, 100], "log": [4, 12, 19, 34, 37, 42, 64, 65, 67, 68, 72, 83, 84, 85, 88, 90], "datetim": [4, 40, 91], "resiz": [4, 8, 89, 91], "arrai": [4, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 42, 50, 52, 54, 55, 57, 60, 61, 62, 67, 68, 72, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 96, 97, 98, 100], "handl": [4, 8, 20, 30, 35, 63, 64, 65, 67, 68, 69, 70, 72, 74, 75, 76, 78, 79, 80, 82, 84, 85, 86, 87, 88, 89, 90, 91, 96, 100, 101], "io": [4, 12, 39, 70, 72, 79, 80, 83, 84, 86, 87, 88], "pars": [4, 20, 27, 32, 63, 64, 65, 66, 68, 72, 74, 77, 79, 81, 82, 83, 84, 89, 96], "variou": [4, 5, 7, 22, 23, 25, 30, 63, 64, 67, 69, 79, 81, 82, 83, 88, 95, 96, 101], "graphic": [4, 5, 20, 30, 34, 46, 92, 93, 94, 96], "plot": [4, 92, 94, 97], "gui": [4, 19, 46, 80, 81, 90, 93, 94], "matric": [4, 29, 37, 41, 60, 61, 67, 68, 69, 70, 72, 74, 76, 97], "solver": [4, 92, 94, 95, 96, 97, 99, 101], "root": [4, 35, 70, 90, 99], "interpol": [4, 18, 90, 94, 95, 96, 97], "optim": [4, 5, 6, 16, 37, 41, 42, 44, 53, 60, 78, 80, 81, 84, 85, 86, 88, 90, 99], "differenti": [4, 92, 97, 98, 99], "eqn": 4, "statist": [4, 6, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 97], "number": [4, 15, 19, 20, 22, 25, 26, 29, 30, 31, 32, 33, 35, 36, 37, 38, 40, 41, 42, 46, 49, 53, 55, 69, 72, 77, 80, 83, 86, 87, 88, 89, 97], "scientif": [4, 5, 7, 18, 19, 44, 91, 92, 93, 94, 95, 96, 97, 98, 100], "domain": [4, 6, 79, 94, 97], "offer": [4, 5, 7, 16, 20, 27, 43, 44, 46, 47, 48, 50], "demonstr": [4, 27, 90, 94], "tutori": [4, 7, 20, 24, 43, 44, 45, 46, 50, 51, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "benchmark": [4, 6, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "good": [4, 7, 28, 32, 42, 44, 53, 54, 55], "justif": 4, "thereof": 4, "singl": [4, 6, 13, 16, 19, 26, 29, 30, 32, 33, 35, 37, 38, 40, 41, 44, 46, 49, 50, 53, 55, 65, 66, 67, 68, 74, 77, 79, 80, 88, 99], "option": [4, 5, 8, 9, 12, 19, 20, 21, 22, 23, 25, 26, 27, 28, 34, 45, 46, 47, 54, 57, 61, 66, 67, 68, 69, 72, 74, 77, 79, 80, 81, 82, 83, 86, 87, 88, 89, 101], "alreadi": [4, 8, 12, 20, 27, 29, 39, 44, 45, 46, 47, 50, 61, 64, 89, 101], "separ": [4, 13, 15, 16, 20, 23, 25, 28, 40, 42, 46, 54, 55, 63, 70, 72, 77, 80, 85, 101], "determin": [4, 20, 25, 27, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42], "releas": [4, 5, 6, 34, 46, 63, 64, 66, 67, 68, 69, 70, 72, 74, 76, 77, 80, 81, 82, 83, 87, 88], "specifi": [4, 12, 13, 20, 23, 26, 27, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 49, 50, 53, 54, 60, 61, 62, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 97, 101], "overrid": [4, 72], "detect": [4, 20, 36, 42, 68, 69, 72, 80], "abl": [4, 20, 23, 27, 40, 48, 50, 53, 63, 68, 69, 101], "known": [4, 18, 20, 21, 27, 30, 35, 42, 49, 54, 79, 83, 101], "unabl": [4, 58], "repo_url": 4, "cannot": [4, 8, 20, 22, 25, 28, 29, 37, 39, 40, 42, 50, 55, 64], "metadata": [4, 63, 66], "assign": [4, 13, 29, 31, 32, 36, 38, 39, 40, 42, 49, 50, 54, 55, 57, 82, 84, 86, 87, 88, 89], "dozen": [5, 6, 26, 65, 83], "commerci": [5, 43, 44, 48, 61, 73], "gnu": [5, 20, 21, 34, 44, 46, 51, 69, 94, 97], "gfortran": [5, 20, 21, 22, 23, 25, 27, 43, 51, 60, 63, 65, 68, 78, 84, 88, 89, 96], "opencoarrai": [5, 43], "wrapper": [5, 11, 79, 81, 84, 85, 86, 93, 94, 95, 96, 97, 98, 99, 100], "enabl": [5, 22, 25, 37, 58, 60, 61, 62, 63, 66, 67, 74, 79, 80, 81, 85, 86, 87, 88, 89, 99, 101], "2018": [5, 6, 7, 9, 32, 34, 39, 41, 42, 46, 83, 92, 94, 96, 97, 100], "llvm": [5, 33, 70, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 89], "flang": [5, 43, 70], "front": [5, 34, 46, 81], "recent": [5, 42, 44, 48, 61, 65, 66, 67, 68, 69, 70, 72, 74, 79, 80, 81, 82, 84, 85, 86, 87, 88], "orient": [5, 6, 7, 50, 84, 85, 91, 92, 95, 96, 97, 98, 100], "mlir": [5, 63, 64, 65, 66, 67, 72, 79, 80, 84, 85, 86, 87, 89], "dialect": [5, 7, 72, 79, 80, 86], "lower": [5, 17, 29, 32, 35, 38, 40, 42, 48, 49, 63, 64, 65, 66, 67, 72, 79, 80, 83, 84, 86, 87, 88, 89, 100], "ir": [5, 63, 64, 65, 66, 67, 72, 79, 80, 82, 85, 86, 89], "activ": [5, 6, 53, 83, 97], "nvidia": [5, 43, 57, 63, 68, 69, 77], "pgi": [5, 68, 69], "lfortran": [5, 43, 61, 75], "interact": [5, 7, 12, 24, 63, 65, 80, 88, 96, 97, 99], "wasm": [5, 88, 89], "web": [5, 7, 44, 62, 67], "browser": [5, 7], "intel": [5, 20, 22, 27, 33, 43, 44, 57, 60, 62, 68, 69, 72, 74, 76, 82], "oneapi": [5, 43, 44, 68, 69], "suit": [5, 6, 63, 64, 65, 66, 67, 79, 80, 81, 82, 83, 97, 99], "hpc": [5, 6, 44, 58, 90, 95, 99], "toolkit": [5, 96], "ifx": [5, 81], "come": [5, 19, 21, 22, 23, 44, 45, 47, 53, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "openmp": [5, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 79, 80, 81, 82, 85, 86, 87, 88, 89, 90, 92, 94, 97, 99], "offload": 5, "gpu": [5, 48, 63, 90, 94, 97, 99], "concurr": [5, 32, 40, 63, 65, 86], "classic": [5, 32, 33, 35, 83, 86, 99], "ifort": [5, 20, 22, 26, 68, 78, 81], "cpu": [5, 6, 20, 40, 63], "purchas": 5, "linux": [5, 7, 20, 21, 24, 25, 28, 42, 43, 45, 47, 51, 64, 80, 94], "window": [5, 7, 21, 22, 23, 24, 25, 28, 40, 43, 44, 45, 47, 51, 55, 65, 66, 68, 69, 72, 74, 76, 77, 79, 80, 81, 82, 85, 87, 88, 101], "platform": [5, 20, 21, 26, 27, 30, 31, 32, 36, 40, 42, 44, 60, 74, 79, 93, 94, 101], "x86": [5, 33, 46, 65], "64": [5, 13, 30, 32, 33, 35, 37, 46, 55, 83, 89, 94], "architectur": [5, 95], "maco": [5, 7, 24, 43, 44, 45, 51, 64, 68, 72, 79, 80], "forum": [5, 7, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "prioriti": 5, "addit": [5, 9, 15, 27, 29, 30, 34, 37, 40, 42, 54, 55, 60, 61, 62, 63, 65, 66, 67, 68, 69, 70, 74, 76, 77, 78, 83, 84, 85, 88], "benefit": [5, 19, 42, 53], "nag": [5, 44, 62, 76], "latest": [5, 6, 20, 27, 28, 43, 48, 63, 64, 65, 66, 82, 83], "7": [5, 20, 29, 30, 32, 33, 35, 36, 37, 40, 41, 42, 48, 49, 50, 51, 57, 65, 67, 68, 69, 72, 77, 78, 79, 82], "legaci": [5, 9, 81, 85, 88], "well": [5, 9, 18, 20, 26, 27, 29, 30, 32, 37, 39, 40, 42, 43, 44, 45, 46, 47, 50, 53, 59, 60, 61, 62, 63, 64, 65, 78, 83, 84, 85, 89], "atom": [5, 20, 38, 67, 68, 80, 86, 88, 89, 95, 99], "event": [5, 6, 27, 38, 57, 83, 99], "task": [5, 14, 20, 47, 63, 68, 80, 83, 89, 90, 95], "plu": [5, 30, 47], "almost": [5, 6, 20, 21, 25, 36, 40, 83], "2008": [5, 7, 29, 30, 31, 33, 35, 37, 38, 40, 41, 42, 93, 94, 95, 98], "coverag": [5, 65, 88], "2003": [5, 7, 19, 29, 31, 32, 37, 39, 40, 41, 42, 93, 94, 98], "polish": [5, 97], "graph": [5, 97], "builder": [5, 44, 81, 82, 84], "precis": [5, 13, 19, 30, 34, 35, 37, 38, 40, 50, 80, 82, 88, 89, 91, 97, 99], "unifi": [5, 70, 81, 99], "sdk": [5, 48], "former": [5, 32], "acceler": [5, 70, 94], "simul": [5, 70, 97, 99], "openacc": [5, 63, 64, 65, 66, 67, 68, 69, 87, 88, 89], "cuda": [5, 48, 97, 99], "math": [5, 6, 33, 68, 70, 88, 89, 97], "maxim": [5, 38, 99], "algorithm": [5, 11, 36, 37, 41, 53, 63, 64, 68, 78, 79, 80, 81, 82, 83, 84, 91, 96, 97, 98, 100], "multi": [5, 29, 37, 41, 53, 88, 94, 97, 99], "scalabl": 5, "nvhpc": 5, "charg": [5, 58, 78, 79, 99], "x86_64": [5, 20], "ppc64le": 5, "aarch64": 5, "hpe": [5, 57], "crai": [5, 57], "environ": [5, 7, 20, 21, 22, 28, 29, 30, 37, 40, 44, 45, 46, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 94, 97, 101], "cce": 5, "cornerston": 5, "innov": 5, "adapt": [5, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 99], "paradigm": [5, 50], "sophist": 5, "technologi": [5, 7], "region": [5, 72, 74, 79, 99], "either": [5, 11, 20, 26, 27, 29, 30, 31, 32, 35, 37, 38, 39, 41, 42, 44, 46, 50, 53, 55, 61], "sequenti": [5, 17, 32, 84], "scalar": [5, 8, 11, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 49, 82, 85, 86, 89, 99], "vector": [5, 11, 17, 29, 33, 35, 37, 41, 54, 81, 84, 89, 91, 93, 94, 95, 96, 97, 98], "multithread": 5, "exploit": 5, "hardwar": [5, 30, 47, 63], "capabl": [5, 7, 20, 27, 32, 44, 48, 75, 83, 97, 99], "ibm": [5, 57], "xl": 5, "industri": 5, "complex": [5, 18, 20, 21, 29, 30, 32, 35, 36, 37, 38, 41, 42, 55, 67, 70, 75, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 99], "leverag": [5, 27, 34, 46], "power9": 5, "infrastructur": 5, "power": [5, 27, 32, 35, 36, 42, 47, 49, 53, 74, 86, 92, 98, 99], "aix": 5, "amd": [5, 57, 63, 65, 66], "aocc": 5, "product": [5, 34, 35, 37, 38, 42, 44, 54, 63, 71, 77, 80, 83], "qualiti": 5, "32": [5, 13, 30, 32, 36, 37, 41, 46, 55, 65, 82, 83, 88, 89], "bit": [5, 13, 19, 23, 26, 34, 36, 38, 42, 46, 55, 82, 83, 88, 89, 94], "thread": [5, 40, 69, 86, 88, 101], "processor": [5, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42], "global": [5, 19, 65, 86, 87, 88, 89, 97, 99], "inter": 5, "analys": [5, 24], "loop": [5, 9, 17, 27, 30, 36, 49, 63, 69, 72, 79, 80, 82, 84, 88, 89], "extract": [5, 30, 42, 84], "core": [5, 6, 62, 91, 96, 97, 98, 100], "simplifi": [5, 27, 32, 72, 74, 81, 85, 101], "tune": [5, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "arm": [5, 57, 63, 64, 65, 66, 67, 72], "tailor": [5, 99], "popular": [5, 14, 20, 44, 45, 47, 48, 68, 88, 92, 101], "absoft": [5, 44], "pro": [5, 45], "deliv": [5, 58, 101], "exclus": [5, 30, 38, 42], "ap": [5, 29], "load": [5, 16, 28, 68, 82, 84, 89, 99, 101], "balanc": [5, 19], "avx": 5, "extend": [5, 10, 19, 21, 30, 34, 36, 37, 39, 42, 50, 69, 70, 87, 99], "95": [5, 7, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42, 79, 80, 97, 99], "f2003": [5, 50], "f2008": 5, "fx3": 5, "debugg": 5, "nativ": [5, 6, 20, 30, 32, 46, 51], "amdal": 5, "oracl": 5, "sun": 5, "premis": 5, "cloud": [5, 6], "sparc": 5, "14": [5, 29, 30, 32, 35, 36, 42, 61, 66, 72, 80, 84], "11": [5, 29, 30, 32, 35, 36, 37, 40, 41, 42, 53, 64, 69, 76, 77, 78, 79], "c11": 5, "gcc": [5, 20, 26, 33, 46, 51, 64, 69, 76, 77, 79], "compat": [5, 11, 21, 32, 40, 42, 46, 50, 72, 83, 87, 89, 101], "analysi": [5, 68, 88, 97, 98, 99], "stack": [5, 8, 65, 98], "overflow": [5, 35, 36, 37, 80, 88, 89], "protect": [5, 16, 50, 57, 77], "runtim": [5, 9, 12, 20, 46, 63, 64, 65, 66, 67, 70, 72, 74, 76, 77, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 94], "lahei": 5, "fujitsu": 5, "lf": 5, "profession": [5, 7, 44], "v7": 5, "8": [5, 13, 29, 30, 32, 35, 36, 37, 38, 40, 41, 42, 46, 49, 57, 63, 64, 65, 66, 67, 69, 70, 72, 77, 78, 79, 87, 88, 94], "lgf": 5, "rainier": 5, "lf95": 5, "77": [5, 7, 29, 32, 35, 37, 42, 63, 64, 65, 67, 72, 97], "complianc": 5, "diagnost": [5, 72, 83], "winteract": 5, "wisk": 5, "silverfrost": [5, 44, 79, 80], "ftn95": [5, 44], "compliant": [5, 40, 88], "win32": [5, 86], "microsoft": [5, 20, 48], "net": [5, 97], "ship": [5, 22], "great": [5, 28, 35, 61, 83], "vendor": [5, 34, 73], "nec": 5, "conform": [5, 29, 30, 41, 42, 62, 80, 89, 95, 99], "iso": [5, 32, 35, 40, 42, 82, 93, 94], "iec": [5, 32, 35, 42], "1539": 5, "2004": [5, 40], "2010": 5, "lcc": [5, 84], "mcst": [5, 84], "1997": 5, "russian": 5, "elbru": 5, "e2k": 5, "r": [5, 7, 9, 26, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 42, 46, 48, 83], "cross": [5, 20, 44, 48, 78, 93, 94, 96, 101], "discontinu": [5, 99], "seem": [5, 18, 20, 42], "apoge": [5, 78], "edinburgh": [5, 78], "hewlett": [5, 83], "packard": [5, 83], "watcom": 5, "pathscal": 5, "g95": [5, 46], "open64": 5, "unisi": 5, "pleas": [5, 25, 37, 41, 48, 55, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "fact": [5, 20, 24], "ground": 6, "computation": [6, 41], "intens": 6, "battl": 6, "close": [6, 12, 39, 72, 74, 78, 79, 83, 84, 86, 87], "metal": [6, 99], "strongli": [6, 55], "catch": [6, 19, 77, 80, 81, 84, 86, 87, 88], "effici": [6, 7, 24, 39, 63], "binari": [6, 20, 29, 30, 32, 36, 41, 42, 51, 63, 67, 68, 79, 84, 85, 86, 88, 89, 91, 96, 98, 100, 101], "small": [6, 20, 29, 36, 37, 39, 41, 53, 65, 78, 88], "surprisingli": 6, "mathemat": [6, 18, 19, 34, 37, 38, 41, 53, 83, 90], "arithmet": [6, 15, 35, 37, 41, 55, 79], "equat": [6, 35, 46, 92, 95, 97, 99, 100], "whiteboard": 6, "versatil": [6, 91], "style": [6, 7, 14, 27, 60, 62, 72, 81, 83, 89, 95], "fit": [6, 8, 40, 42, 51, 53, 57, 89], "problem": [6, 19, 20, 27, 28, 45, 49, 72, 83, 89, 90, 97], "imper": 6, "intuit": [6, 20, 42], "like": [6, 7, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 36, 37, 39, 41, 42, 44, 47, 51, 53, 54, 55, 63, 64, 69, 70, 72, 83, 86, 87, 94, 96, 98, 101], "between": [6, 8, 15, 17, 19, 20, 27, 29, 30, 32, 35, 36, 37, 38, 40, 42, 45, 46, 50, 55, 61, 72, 81, 85, 87, 88, 94, 95, 97], "share": [6, 22, 24, 25, 26, 28, 31, 40, 46, 58, 68, 74, 86, 87, 91, 94, 97, 98, 99], "memori": [6, 8, 9, 17, 21, 24, 30, 39, 42, 46, 50, 64, 68, 85, 89, 94, 97, 99], "multicor": 6, "team": [6, 38, 39, 44, 57, 66, 70, 79], "pattern": [6, 14, 20, 27, 29, 30, 42, 69, 81, 82, 84, 88, 92], "faq": [6, 7], "statu": [6, 8, 12, 16, 21, 29, 31, 37, 39, 40, 41, 42, 63, 80, 88], "next": [6, 20, 21, 26, 28, 36, 37, 40, 43, 51, 52, 53, 55, 60, 63, 64, 65, 66, 67, 80, 83], "2023": [6, 67, 77], "plan": [6, 20, 57, 62, 63, 64, 65, 66, 67, 70, 72, 77, 83], "further": [6, 10, 20, 27, 48, 65, 66, 67], "adopt": [6, 81, 83], "weather": [6, 99], "ocean": [6, 99], "predict": [6, 20], "fluid": [6, 90, 99], "financ": 6, "domin": [6, 70, 72, 76, 78, 79, 85], "fastest": [6, 19, 29, 49], "supercomput": [6, 7, 67], "my": [6, 29, 39, 42, 78], "job": [6, 40, 83], "mail": [6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87], "subscrib": [6, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87], "anyth": [6, 20, 25, 40, 61, 83], "twitter": [6, 63, 64, 65, 66, 73, 83], "fortranlang": [6, 66, 73, 83], "rss": 6, "feed": [6, 83, 88], "client": [6, 28, 92, 94], "better": [6, 19, 20, 30, 37, 47, 60, 61, 65, 66, 67, 79, 80, 81, 82, 84, 88], "idea": [6, 19, 27, 39, 58, 68, 69, 70, 71, 72, 79, 83, 101], "Or": [6, 11, 26], "just": [6, 8, 19, 20, 24, 26, 27, 29, 30, 32, 36, 37, 40, 41, 42, 46, 47, 49, 54, 61, 67], "research": [6, 19, 99, 101], "busi": 6, "schoolwork": 6, "expert": [7, 73], "alik": [7, 44, 83], "look": [7, 20, 24, 26, 27, 29, 30, 32, 37, 41, 46, 48, 60, 68, 69, 71, 72, 73, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "ask": [7, 22, 61, 71, 78, 83, 101], "question": [7, 48, 68, 71, 101], "plai": 7, "tast": [7, 23, 45], "playground": 7, "o": [7, 20, 21, 22, 23, 25, 26, 27, 30, 32, 33, 34, 39, 51, 65, 70, 72, 84, 86, 88, 89, 94, 95, 97], "canon": [7, 14, 63, 64, 99], "man": [7, 20, 34, 83], "wiki": [7, 34, 37, 46, 48, 72], "articl": [7, 35, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "rosetta": 7, "stone": 7, "interpret": [7, 24, 32, 40, 42, 44, 57, 86, 95, 100], "j3": [7, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "18": [7, 13, 29, 30, 32, 35, 40, 42, 57, 66, 81, 83], "007r1": 7, "f2018": [7, 34, 42], "nation": [7, 67, 83], "intern": [7, 11, 32, 35, 36, 39, 40, 44, 50, 58, 64, 65, 67, 69, 74, 80, 83, 85, 88, 89, 97], "wg5": [7, 61, 77], "sampl": [7, 16, 29, 30, 31, 33, 35, 36, 37, 38, 39, 40, 41, 42, 83, 89, 97, 99], "doctor": [7, 13], "blog": 7, "post": [7, 38, 48, 60, 66, 67, 69, 76, 79, 83], "interest": [7, 20, 27, 30, 37, 41, 57, 61, 62, 63, 72, 73, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "littl": [7, 19, 20, 30], "understood": 7, "aspect": [7, 40, 83], "cours": [7, 20, 26, 27, 29, 30, 37, 42, 63, 64, 68, 72, 74, 83], "leibniz": 7, "rechenzentrum": 7, "prace": 7, "f": [7, 9, 10, 19, 20, 22, 25, 26, 27, 29, 30, 32, 35, 36, 37, 39, 41, 42, 66, 68, 84, 86, 87, 88, 95], "solv": [7, 19, 20, 27, 92, 97, 101], "conserv": 7, "law": [7, 41], "pde": [7, 92, 97], "spectral": [7, 97, 99], "element": [7, 17, 19, 20, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 49, 57, 60, 61, 77, 78, 80, 81, 82, 83, 87, 88, 89, 95, 97, 99], "kursmateri": 7, "f\u00fcr": 7, "wissenschaftlich": 7, "programmieren": 7, "2017": [7, 51], "b\u00e1lint": [7, 61], "bremen": 7, "center": [7, 99], "materi": [7, 34, 89, 99], "german": 7, "french": [7, 85], "chemist": 7, "physicist": 7, "pekka": 7, "manninen": 7, "univers": [7, 40, 42, 72, 74, 83], "helsinki": 7, "fortran90": [7, 29, 74, 76, 77, 78, 79, 80, 83], "thoma": 7, "koenig": 7, "workshop": [7, 58], "stuttgart": 7, "philipp": 7, "engel": 7, "wu": 7, "ting": 7, "tsai": 7, "taiwan": 7, "given": [7, 13, 16, 21, 29, 30, 32, 35, 36, 37, 39, 41, 42, 47, 50, 53, 83, 101], "nick": 7, "maclaren": 7, "cambridg": 7, "steve": [7, 58, 60], "morgan": 7, "liverpool": 7, "unfp": 7, "ian": 7, "non": [7, 9, 27, 29, 30, 32, 34, 35, 36, 37, 40, 41, 42, 64, 68, 70, 72, 74, 80, 82, 84, 85, 86, 88, 89, 97, 101], "anton": 7, "shterenlikht": 7, "bristol": 7, "fortran77": [7, 97], "clive": 7, "leicest": 7, "uk": 7, "train": [7, 35, 99], "archer": 7, "techniqu": [7, 32], "co": [7, 34, 37, 42, 58, 76, 88], "robert": 7, "w": [7, 32, 35, 36, 81, 86], "numrich": 7, "john": [7, 49, 50], "reid": 7, "bo": 7, "einarsson": 7, "yurij": 7, "shokin": 7, "older": [7, 46, 48, 83], "erik": 7, "boman": 7, "stanford": 7, "paul": 7, "hargrov": 7, "sarah": 7, "whitlock": 7, "k": [7, 10, 11, 17, 19, 29, 30, 32, 36, 37, 41, 50, 83], "shene": 7, "michigan": 7, "explor": [7, 32, 48, 57, 61], "basic": [7, 14, 20, 21, 22, 27, 29, 30, 34, 35, 36, 37, 39, 41, 42, 48, 50, 63, 67, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "chapter": [7, 20, 27, 43], "ramkarthik": 7, "solanki": 7, "2021": [7, 33, 45, 60, 84], "recip": [7, 83], "quantum": [7, 80, 81, 90, 97, 99], "theori": [7, 27, 90, 99], "adventur": 7, "1st": [7, 50], "ed": 7, "boca": 7, "raton": 7, "crc": 7, "press": 7, "metcalf": 7, "cohen": [7, 57], "explain": 7, "5th": [7, 66], "shelter": 7, "island": 7, "ny": [7, 60], "fehr": 7, "h": [7, 9, 30, 32, 33, 42, 67, 68, 82, 85, 88, 89], "kindermann": 7, "econom": 7, "marku": [7, 45, 75, 83], "2012": 7, "chiver": 7, "sleightholm": 7, "4th": 7, "springer": 7, "chapman": 7, "scientist": 7, "york": [7, 60], "mcgraw": 7, "hill": 7, "educ": 7, "rai": 7, "hall": 7, "brainerd": 7, "2015": 7, "london": [7, 50, 99], "verlag": 7, "akin": 7, "via": [7, 20, 22, 25, 26, 28, 29, 37, 41, 62, 63, 64, 83, 89, 94, 97, 101], "mccormack": 7, "2009": [7, 42], "lulu": 7, "xia": 7, "xiaofeng": 7, "2014": 7, "2nd": [7, 50], "chirila": 7, "lohmann": 7, "earth": [7, 35, 40, 99], "berlin": 7, "clerman": 7, "n": [7, 8, 9, 11, 15, 16, 29, 30, 32, 35, 37, 38, 39, 40, 41, 42, 46, 53, 54, 67, 79, 80, 89, 97], "spector": 7, "2011": [7, 35], "usag": [7, 9, 16, 17, 19, 20, 29, 30, 32, 35, 37, 41, 50, 78, 79, 81, 84, 87, 89], "hanson": 7, "hopkin": 7, "2013": 7, "philadelphia": 7, "siam": 7, "oliveira": 7, "steward": [7, 73], "2006": 7, "kernighan": 7, "pike": 7, "1999": 7, "addison": 7, "weslei": 7, "safe": [8, 13, 20, 40, 42, 88], "comparison": [8, 29, 32, 36, 38, 48, 65, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 86], "pointer": [8, 10, 17, 29, 30, 31, 32, 37, 38, 39, 41, 50, 57, 72, 74, 80, 82, 84, 85, 86, 87, 88, 89, 91], "dealloc": [8, 29, 39, 40, 49, 67, 79, 87, 88], "goe": [8, 22, 53], "scope": [8, 16, 49, 50, 54, 69, 80, 83, 86, 87, 88, 89], "remov": [8, 20, 27, 29, 32, 35, 37, 38, 40, 41, 48, 49, 66, 67, 68, 69, 72, 74, 76, 77, 78, 79, 80, 82, 84, 85, 86, 87, 88, 89], "possibl": [8, 16, 19, 23, 27, 42, 44, 46, 50, 53, 66, 81, 83, 101], "leak": [8, 64], "scratch": [8, 12, 28, 39], "becom": [8, 20, 23, 26, 32, 34, 38, 39, 47, 57, 67, 83], "too": [8, 18, 32, 35, 36, 37, 40, 41, 42, 87, 89], "real": [8, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20, 22, 25, 26, 27, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 49, 50, 53, 54, 55, 68, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 97, 99], "temp": [8, 33, 37, 88, 89], "alloc": [8, 34, 35, 38, 39, 40, 42, 49, 57, 67, 68, 74, 75, 76, 78, 79, 84, 85, 87, 88, 89], "uniniti": [8, 72, 87], "show_arr": 8, "arr": [8, 29, 30, 37, 41], "insid": [8, 9, 11, 16, 29, 50, 53, 63, 64, 65, 89], "dummi": [8, 9, 16, 29, 39, 41, 54, 57, 60, 69, 72, 74, 81, 86, 87, 88, 89], "carri": [8, 20, 99], "enter": [8, 25, 39, 42, 51, 55, 67, 88], "foo": [8, 19, 86], "lam": [8, 9], "afterward": [8, 29], "normal": [8, 20, 29, 32, 55, 77, 78, 79, 80, 81, 82, 83, 84, 97], "without": [8, 9, 13, 16, 17, 21, 25, 26, 27, 29, 32, 35, 37, 40, 41, 42, 50, 55, 81, 83, 86, 87, 101], "similarli": [8, 9, 12, 16, 20, 29], "invok": [8, 9, 25, 26, 27, 32, 37, 38, 39, 40, 41, 50, 54, 67, 77], "realloc": 8, "anymor": [8, 26, 64], "proc": [8, 27, 80, 84, 89], "size": [8, 9, 11, 12, 13, 16, 17, 20, 30, 31, 32, 34, 35, 37, 38, 39, 40, 41, 42, 49, 54, 72, 76, 80, 83, 84, 88, 89], "unalloc": [8, 29, 30, 32, 37, 39, 41], "invalid": [8, 38, 88], "present": [8, 12, 14, 27, 29, 30, 31, 32, 34, 35, 37, 38, 40, 41, 42, 44, 45, 46, 50, 58, 63, 72, 74, 80, 82, 83, 88, 89], "associ": [8, 29, 30, 31, 32, 34, 35, 37, 38, 41, 54, 57, 78, 79, 84, 86, 87, 88, 89], "move": [8, 20, 30, 39, 45, 63, 70, 74, 79, 80, 81, 85, 88, 89], "move_alloc": [8, 29, 34, 78, 79, 84], "var": [8, 38, 40, 42], "wp": [8, 35, 40], "inout": [8, 19, 30, 38, 39, 40, 54], "this_siz": 8, "new_siz": 8, "inital_s": 8, "16": [8, 13, 29, 30, 32, 35, 37, 40, 42, 45, 60, 61, 63, 67, 69, 79, 83, 85, 88, 89], "tmp": [8, 11], "els": [8, 19, 29, 30, 32, 35, 36, 37, 39, 40, 41, 42, 53, 73, 81, 85, 86], "initial_s": 8, "min": [8, 29, 34, 36, 76, 82, 84, 86, 87], "byte": [8, 13, 30, 31, 42, 88], "whatev": [8, 20, 23, 40, 53], "previous": [8, 50], "address": [8, 17, 29, 31, 45, 50, 57, 72, 78], "0_dp": [8, 9, 13, 15, 16, 17, 19, 35, 37, 55], "constant": [8, 13, 16, 29, 30, 32, 35, 37, 40, 42, 55, 65, 74, 76, 78, 80, 82, 85, 86, 87, 88, 89, 94, 95, 96, 97], "central": [9, 13, 101], "four": [9, 18, 20, 27, 40, 47, 61, 62, 63, 83, 97], "assum": [9, 21, 25, 26, 29, 30, 32, 33, 36, 39, 40, 41, 42, 54, 66, 69, 80, 89], "shape": [9, 11, 30, 31, 34, 35, 38, 39, 42, 47, 54, 82, 84, 85, 86, 88, 89], "rank": [9, 17, 30, 31, 34, 35, 38, 39, 40, 42, 57, 68, 77, 80, 85, 86, 89], "explicit": [9, 11, 19, 29, 49, 54, 55, 65, 72, 84, 86], "higher": [9, 13, 17, 32, 37, 40, 41, 42, 89, 94, 99], "dimension": [9, 29, 42, 83, 94, 97, 99], "done": [9, 20, 22, 24, 29, 32, 38], "advantag": [9, 19, 20, 22, 24, 42, 53, 54], "along": [9, 19, 20, 21, 29, 30, 35, 37, 38, 41, 49], "stride": [9, 17], "descriptor": [9, 32, 42, 81, 82, 86, 87, 88, 89], "alwai": [9, 13, 15, 16, 17, 18, 19, 20, 29, 30, 32, 35, 37, 40, 41, 42, 54, 55, 79, 83, 86, 88], "whole": [9, 16, 20, 27, 29, 30, 35, 36, 37, 40, 42, 55, 84], "slice": [9, 17, 76, 77, 78, 81, 84, 88], "obfusc": 9, "actual": [9, 15, 16, 19, 20, 21, 23, 24, 29, 30, 53, 80, 86, 87, 88, 89], "select": [9, 16, 29, 30, 32, 36, 37, 40, 41, 42, 46, 65, 67, 76, 79, 80, 81, 82, 83, 84, 86, 88, 94, 95], "queri": [9, 29, 30, 32, 34, 35, 38, 39, 40, 42, 83], "construct": [9, 18, 20, 29, 42, 63, 68, 69, 74, 78, 80, 81, 82, 84, 86, 87, 88, 89], "easili": [9, 20, 32, 81], "deal": [9, 20, 22, 27, 32, 53, 84, 86, 91, 97], "return": [9, 12, 21, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 46, 50, 54, 69, 72, 76, 79, 84, 86, 87, 88, 89], "frequent": [9, 83, 101], "dimens": [9, 17, 29, 30, 35, 37, 40, 41, 42, 49, 50, 54, 72, 80, 86, 87, 88, 97], "explicitli": [9, 12, 16, 20, 26, 27, 29, 32, 39, 42, 50, 53, 54, 55, 87], "indic": [9, 18, 23, 26, 28, 29, 30, 32, 34, 36, 37, 38, 39, 40, 41, 42, 49, 80, 85], "routin": [9, 19, 22, 25, 26, 29, 30, 32, 37, 41, 65, 68, 72, 78, 79, 80, 81, 82, 84, 86, 91, 94, 95, 96, 97, 98, 99, 100], "legal": 9, "potenti": [9, 17, 27, 39, 53, 84, 99, 101], "yield": [9, 27, 35, 37, 42], "incorrect": [9, 42, 82], "12": [9, 29, 30, 31, 32, 35, 36, 37, 40, 41, 46, 60, 61, 63, 66, 69, 72, 78], "preserv": [9, 42, 88], "contigu": [9, 17, 29, 42, 50, 72, 84, 92], "temporari": [9, 17, 39, 64, 85, 89], "found": [9, 20, 22, 23, 26, 28, 30, 32, 40, 46, 61, 63, 64, 65, 66, 67, 80, 82, 83, 87], "favour": 9, "asterisk": [9, 42], "last": [9, 20, 29, 30, 32, 34, 35, 37, 40, 41, 45, 47, 60, 63, 70, 72, 77, 86, 87], "disabl": [9, 20, 27, 37, 79, 87], "correct": [9, 10, 20, 21, 26, 27, 32, 53, 65, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 82, 84, 85, 86, 88, 89, 99], "properti": [9, 18, 34, 50, 79, 80, 81, 82, 84, 99], "stop": [9, 20, 28, 29, 31, 35, 38, 39, 41, 53, 61, 67, 68, 72, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "total": [9, 29, 30, 69, 72, 74, 78, 83, 88, 89], "obtain": [9, 30, 31, 37, 38, 41], "second": [9, 16, 20, 25, 27, 29, 30, 32, 35, 37, 40, 41, 62, 73, 78, 79, 80, 83], "constructor": [9, 49, 50, 74, 85, 86, 87, 88, 89], "annot": [9, 87], "print_eigenvalu": 9, "kappa_min": 9, "kappa": 9, "ubound": [9, 34, 38, 42, 76, 88, 89], "anoth": [10, 17, 18, 20, 26, 27, 28, 29, 30, 32, 37, 39, 40, 42, 45, 50, 53, 60, 61, 83, 96], "abstract": [10, 19, 20, 31, 50, 58, 63, 69, 72, 74, 75, 76, 77, 78, 79, 81, 82, 84, 85, 89, 94, 101], "declar": [10, 13, 20, 27, 29, 35, 39, 42, 54, 69, 76, 77, 81, 85, 87, 88, 89], "signatur": 10, "simpson": [10, 19, 62], "integrable_funct": 10, "shown": [10, 22, 40, 49, 52], "demo_funct": 10, "test_integr": 10, "_dp": [10, 11, 19], "sin": [10, 19, 25, 34, 37, 42, 53, 88], "export": [10, 16, 20, 26, 54, 69, 88], "demo_integr": 10, "simpson2": 10, "mid": [10, 60, 61], "approach": [11, 27, 42, 46, 80, 87, 99, 101], "reshap": [11, 17, 30, 34, 35, 37, 41, 84, 85, 88], "nroot": 11, "9": [11, 13, 20, 29, 30, 32, 35, 36, 37, 40, 41, 42, 49, 54, 57, 64, 66, 69, 70, 89], "0000000000000000": [11, 30, 35, 42], "1622776601683795": 11, "5874010519681994": 11, "7320508075688772": 11, "5848931924611136": 11, "4142135623730951": 11, "3195079107728942": 11, "typic": [11, 28, 29, 30, 32, 36, 37, 39, 40, 42], "arbitrari": [11, 29, 32, 36, 37, 40, 50, 85, 94, 95, 96, 97, 98, 99, 100], "care": [11, 15, 24, 26, 28, 36, 37, 42, 53, 61], "sens": [11, 18], "impli": [11, 49, 50, 55, 72, 74, 80, 84, 85, 87], "effect": [11, 27, 32, 40, 42, 88], "faster": [11, 21, 87], "reason": [11, 20, 27, 40, 45], "incompat": [11, 86], "One": [11, 24, 26, 35, 36, 37, 41, 47, 53, 64, 65, 80], "nroot_0d": 11, "nroot_2d": 11, "And": [11, 20, 21, 26, 35, 95], "filesystem": 12, "mainli": [12, 81], "happen": [12, 20, 24, 30, 42, 53, 64, 89], "through": [12, 20, 23, 27, 29, 30, 46, 47, 51, 54, 76, 83, 89, 101], "inquir": [12, 80, 84, 86, 87, 89], "newunit": [12, 39, 86], "txt": [12, 20, 57, 89], "By": [12, 22, 23, 29, 32, 34, 42, 50], "record": [12, 32, 39, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "overwrit": [12, 66], "action": [12, 20, 21, 67, 68, 72, 74, 81, 85], "old": [12, 18, 19, 29, 38, 79], "occur": [12, 29, 32, 37, 38, 39, 40, 53], "altern": [12, 20, 22, 26, 29, 30, 32, 35, 42, 46, 53, 57, 72, 77, 80, 87, 89], "iostat": [12, 39], "iomsg": [12, 39, 84, 88], "stat": [12, 29, 38, 39, 40, 57], "512": [12, 30], "msg": [12, 89], "trim": [12, 29, 34, 37, 39, 40, 41, 42, 49, 72, 74, 80, 88], "suffici": [12, 18, 19, 40, 63, 64, 65], "storag": [12, 13, 29, 30, 31, 39, 40, 42, 88], "hold": [12, 20, 40, 42], "messag": [12, 28, 29, 39, 40, 53, 61, 65, 66, 68, 77, 79, 81, 82, 84, 86, 87, 88, 89], "decid": [12, 32, 53], "posit": [12, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 50, 55, 84, 86, 88, 89, 101], "reset": [12, 40], "rewind": [12, 39], "backspac": [12, 80, 89], "represent": [13, 30, 32, 36, 37, 40, 42, 63, 65, 67, 83, 84, 87, 88], "custom": [13, 49, 62, 77, 85, 86], "kind": [13, 20, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 50, 55, 72, 77, 84, 85, 86, 87, 88, 89, 91, 97], "defin": [13, 16, 18, 19, 20, 22, 23, 25, 26, 27, 29, 30, 32, 35, 36, 37, 38, 39, 40, 41, 42, 50, 53, 72, 74, 80, 81, 84, 85, 86, 87, 89, 97, 101], "selected_real_kind": [13, 34, 36], "15": [13, 29, 30, 32, 35, 36, 37, 41, 42, 68, 72, 77, 78, 82, 86, 87], "suffic": [13, 27], "infer": 13, "liter": [13, 30, 42, 55, 86], "0d0": [13, 35, 36, 37, 42], "renam": [13, 20, 69, 70, 80, 84, 86, 89, 94], "iso_fortran_env": [13, 27, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 42, 55, 79, 89, 92], "real64": [13, 29, 35, 36, 37, 40, 42, 55], "insight": 13, "thought": [13, 18, 19, 30, 35, 36, 37], "necessari": [13, 19, 26, 27, 29, 40, 42, 53, 54, 61, 64, 65], "kind_paramet": 13, "digit": [13, 32, 34, 40, 42], "\u00b3\u2077": 13, "10\u00b3\u2077": 13, "doubl": [13, 35, 37, 55, 80, 89], "\u00b3\u2070\u2077": 13, "10\u00b3\u2070\u2077": 13, "307": [13, 35, 36, 42, 68, 80], "quadrupl": [13, 82], "33": [13, 29, 32, 35, 37, 41, 83], "\u2074\u2079\u00b3\u00b9": 13, "10\u2074\u2079\u00b3\u00b9": 13, "128": [13, 30, 36, 42, 63], "qp": [13, 16], "4931": [13, 42], "char": [13, 29, 34, 42, 82], "2\u2077": 13, "selected_int_kind": [13, 34, 37], "2\u00b9\u2075": 13, "2\u00b3\u00b9": 13, "i4": [13, 30], "2\u2076\u00b3": 13, "i8": [13, 30, 42], "5_dp": [13, 16], "34e8_dp": 13, "lose": [13, 85], "accuraci": [13, 35, 36, 40], "impos": [13, 19, 30], "divis": [13, 37, 55, 80, 85], "equal": [13, 29, 30, 31, 32, 35, 36, 37, 38, 39, 41, 42, 49, 53, 77, 97], "convert": [13, 30, 31, 32, 35, 37, 38, 41, 42, 72, 74, 81, 82, 84, 85, 88, 89, 91, 95, 98], "75_dp": 13, "unlimit": [13, 29, 30, 39, 85, 89], "g0": [13, 29, 30, 32, 35, 36, 37, 40, 41, 42, 89], "exponenti": [13, 35, 77, 78, 79, 80, 81, 82, 84, 85], "es24": 13, "16e3": 13, "17": [13, 21, 30, 32, 35, 36, 37, 41, 48, 67, 79, 85], "printout": [13, 20, 83], "solut": [14, 20, 26, 45, 48, 97, 101], "meant": [14, 32, 95], "distinguish": [15, 26, 30, 35, 37, 41, 81, 82, 86, 87], "float": [15, 29, 35, 36, 37, 41, 42, 50, 70, 88, 91, 97], "furthermor": [15, 50], "prece": 15, "subtract": [15, 35, 36, 37, 55], "absenc": 15, "parenthesi": [15, 20], "preced": [15, 42, 55], "evalu": [15, 17, 19, 20, 27, 29, 30, 41, 53, 63, 64, 65, 66, 67, 68, 69, 78, 79, 81, 82, 85, 86, 88, 89, 95, 96, 100], "odd": [15, 29, 30, 37, 41, 49, 53], "Be": 15, "cast": [15, 42, 89, 99], "multipli": [15, 29, 36, 37, 41, 86], "convent": [16, 20, 21, 26, 37, 41, 63, 64, 65, 69, 70], "filepath": 16, "clash": [16, 69, 72, 89], "toml": [16, 47, 63, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 95], "fpm_toml": 16, "fpm_error": 16, "error_t": 16, "fatal_error": 16, "file_not_found_error": 16, "fpm_string": [16, 72], "string_t": 16, "tomlf": 16, "toml_tabl": 16, "toml_arrai": 16, "toml_kei": 16, "toml_stat": 16, "get_valu": 16, "set_valu": 16, "toml_pars": 16, "toml_error": 16, "new_tabl": 16, "add_tabl": 16, "add_arrai": 16, "toml_seri": 16, "read_package_fil": 16, "configur": [16, 20, 27, 45, 74, 79, 80, 95, 96, 101], "manifest": [16, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "few": [16, 20, 24, 27, 29, 47, 48, 61, 64, 66, 67, 68, 69, 72, 79, 80, 83, 89], "live": [16, 101], "regardless": [16, 40], "glanc": 16, "rather": [16, 20, 27, 29, 32, 37, 42], "reimport": 16, "symbol": [16, 20, 21, 32, 50, 65, 74, 81, 82, 86, 88, 89], "repeat": [16, 29, 34, 53, 79, 82, 88, 89], "implicitli": [16, 50, 55], "enumer": [16, 68, 76], "submodul": [16, 27, 66, 68, 89, 92], "chain": 16, "shorten": [16, 18, 89], "recompil": [16, 27], "cascad": 16, "special": [16, 20, 24, 27, 34, 35, 37, 40, 41, 47, 50, 59, 84, 86, 87, 88, 89], "preprocessor": [16, 67, 81, 82, 85, 98], "quadratur": [16, 62, 70, 72, 74, 76, 77, 83, 85, 89, 92, 97], "stdlib_quadratur": 16, "stdlib_kind": 16, "trapz": 16, "trapezoid": 16, "rule": [16, 18, 20, 27, 32, 37, 38, 41, 42, 62, 72, 74, 80], "trapz_dx_dp": 16, "dx": 16, "trapz_x_dp": 16, "stdlib_quadrature_trapz": 16, "stdlib_error": 16, "sum": [16, 32, 34, 35, 36, 37, 38, 40, 41, 42, 53, 54, 77, 87], "reduc": [16, 29, 30, 34, 35, 37, 38, 42, 67, 77, 80, 88, 89], "huge": [16, 27, 29, 30, 34, 35, 37, 40, 42], "reus": [16, 32, 54, 83], "reusabl": [16, 50], "focu": [16, 18, 20, 43, 50], "convei": [16, 53], "column": [17, 29, 32, 35, 37, 41, 47, 49, 89], "inner": [17, 21, 88, 89], "invers": [17, 30, 35], "distanc": [17, 35, 36, 37, 38], "xyz1": 17, "xyz2": 17, "matrix": [17, 29, 34, 37, 54, 79, 80, 81, 82, 84, 94, 97, 99, 101], "coulomb_matrix": 17, "norm2": [17, 34, 54], "contract": 17, "amat": 17, "cmat": 17, "bvec": 17, "bound": [17, 19, 29, 33, 35, 38, 42, 49, 57, 72, 79, 84, 88], "remap": [17, 86], "matmul312": 17, "aptr": 17, "cptr": [17, 31, 89], "matmul": [17, 34, 42, 81, 88, 89], "ultim": [18, 29, 82], "preval": 18, "lowercas": [18, 27, 32], "notat": [18, 30, 49, 97], "ylm": 18, "gamma": [18, 34, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "enl": 18, "rnl": 18, "syllabl": 18, "underscor": [18, 55], "clarifi": [18, 30, 34, 37], "sortpair": 18, "whitechar": 18, "meshexp": 18, "numstr": 18, "linspac": [18, 76, 77, 78], "meshgrid": 18, "argsort": 18, "spline": [18, 90, 95, 96, 97], "spline_interp": 18, "spline_interpol": 18, "stoperr": 18, "stop_error": 18, "meshexp_d": 18, "splineint": 18, "int": [18, 29, 30, 32, 34, 35, 36, 37, 38, 50, 69], "could": [18, 19, 20, 23, 26, 29, 32, 35, 37, 39, 40, 50, 101], "much": [18, 19, 21, 22, 25, 27, 29, 40, 54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "ambigu": [18, 30, 81], "get_argu": [18, 84, 85, 86, 87, 88, 89], "getarg": 18, "perfectli": [18, 46], "clean": [18, 20, 24, 27, 63, 83, 86, 87, 88, 89], "choos": [18, 20, 22, 35, 40, 42, 44, 45, 47, 48, 53], "certainli": [18, 24], "being": [18, 20, 29, 30, 31, 32, 35, 36, 37, 40, 41, 42, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "truncat": [18, 30, 37, 40, 42, 49, 78, 80], "thu": 18, "go": [18, 19, 25, 27, 30, 32, 35, 46, 49, 50, 53, 60, 61, 83], "realli": [18, 19], "affect": [18, 30, 37, 41, 42], "simplic": 18, "regard": [18, 35, 37, 38, 67, 68, 69, 80], "saniti": 18, "seen": [18, 20, 23, 30, 37, 60, 61, 65], "amount": [18, 27, 30, 37, 40, 41, 55, 79], "main": [18, 19, 21, 22, 23, 24, 27, 29, 33, 44, 46, 47, 50, 53, 63, 70, 71, 72, 76, 80, 81, 82, 84, 85, 87, 89], "ton": 18, "behavior": [18, 37, 40, 42, 81, 88], "throughout": 18, "literatur": 18, "longer": [18, 30, 32, 39, 42, 49, 54, 83], "mission": 18, "But": [18, 19, 20, 21, 32], "essenti": [19, 30, 32, 42, 47], "five": [19, 27, 30, 42, 49, 50, 89], "disadvantag": [19, 42], "ii": [19, 27, 29, 30, 35, 36, 42], "iii": [19, 30, 36, 42], "iv": [19, 89], "vi": 19, "obsolet": [19, 82], "pack": [19, 30, 34, 41, 80, 89], "everyth": [19, 20, 27, 29, 32, 45, 50, 61], "caller": [19, 50], "unpack": [19, 34, 37, 42, 80], "lapack": [19, 94, 95, 96, 97], "encompass": 19, "variat": [19, 24, 85], "remot": [19, 38, 47, 48, 61, 66, 101], "forward": [19, 35, 45, 60, 67, 68, 69, 71, 72, 73, 74, 89, 97, 98], "permit": [19, 38], "won": 19, "sai": [19, 26], "instanti": [19, 74, 88, 89, 98], "text": [19, 21, 24, 27, 35, 44, 45, 46, 48, 55, 62, 78, 80], "editor": [19, 20, 44, 45, 46, 48, 51, 63], "adjust": [19, 27, 32, 35, 89], "accord": [19, 29, 30, 42, 48, 55, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 100], "l": [19, 26, 30, 32, 35, 42], "z": [19, 27, 29, 30, 32, 35, 37, 39, 42, 84, 89], "flexibl": [19, 26, 99], "schroeding": 19, "dirac": [19, 99], "piec": [19, 21, 25, 27, 40], "label": [19, 30, 39, 88, 89], "needn": 19, "bust": 19, "natur": [19, 35, 53], "viabl": [19, 80, 83], "hide": [19, 50, 55], "global_a": 19, "global_k": 19, "though": [19, 22, 24, 29, 35, 36, 37, 40, 41, 42, 83, 89], "semi": 19, "simplest": [19, 22, 24, 25, 89], "cleanest": 19, "safer": 19, "c_loc": [19, 34, 89], "c_f_pointer": [19, 34, 86, 89], "f_data": 19, "fewer": [19, 38], "inevit": 19, "leaki": 19, "prone": 19, "cost": 19, "thrust": 19, "repres": [19, 29, 30, 32, 36, 37, 40, 42, 48, 50, 55, 64, 68, 69, 74, 76, 79, 80, 89], "formul": [19, 72], "untold": 19, "drop": [19, 29, 30, 35, 37, 41, 80, 81, 82, 84, 85, 86, 87, 88, 89], "down": 19, "equival": [19, 29, 30, 32, 35, 37, 39, 42, 49, 50, 77, 86, 88], "verbos": [19, 69], "jblevin": 19, "pdf": 19, "www": [19, 46], "macresearch": 19, "advanced_fortran_90_callbacks_with_the_transfer_funct": 19, "integrand": 19, "defer": [19, 30, 32, 86, 88], "eval": [19, 27], "fx": 19, "prescrib": 19, "noth": [19, 20, 29, 39, 46], "concret": [19, 83], "example_usag": 19, "my_integrand": 19, "my_f": 19, "gist": [19, 47, 79], "1665641": 19, "1665626": 19, "1665630": 19, "cumbersom": 19, "auxiliari": [19, 25, 27], "convers": [19, 30, 32, 35, 37, 38, 40, 41, 42, 65, 80, 81, 82, 84, 85, 86, 87, 88, 89, 97, 98, 100], "hi": [19, 60, 67], "quit": [20, 23, 26, 44, 48, 49, 53, 61], "complic": [20, 23, 26, 28], "interdepend": [20, 27, 53], "linker": [20, 21, 24, 25, 26, 80, 83], "increasingli": [20, 83], "unless": [20, 27, 29, 30, 31, 32, 37, 38, 40, 42, 50, 54, 89], "probabl": [20, 28, 32, 37, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 94, 95, 96, 97], "eclips": [20, 44], "photran": [20, 44], "often": [20, 23, 26, 30, 32, 34, 35, 37, 40, 42, 49, 53], "encod": [20, 32, 42, 88], "makefil": [20, 27, 62, 69, 72, 74, 84], "intermediari": 20, "autotool": [20, 46], "awai": [20, 35], "factor": [20, 88, 89], "comfort": 20, "spend": [20, 27], "frustrat": 20, "restrict": [20, 37, 53, 68, 69, 72, 82, 89, 101], "barrier": [20, 63, 79], "curv": [20, 35, 47], "perfect": 20, "commonli": [20, 30, 32, 35, 42, 54, 55], "depth": [20, 21, 29, 66, 67, 68, 77], "lookup": [20, 91], "echo": [20, 40], "substitut": [20, 30], "command": [20, 21, 22, 23, 25, 26, 34, 40, 51, 55, 60, 62, 63, 64, 67, 68, 81, 83, 84, 85, 86, 87, 88, 89, 96, 101], "notic": [20, 29, 30, 37], "miss": [20, 21, 27, 57, 66, 68, 74, 81, 84, 86, 87, 89], "prog": 20, "my_prog": 20, "enclos": [20, 53], "overhead": [20, 27, 40], "expans": [20, 40], "did": [20, 29, 39, 57, 62], "resolv": [20, 81, 85, 86, 87, 88, 101], "termin": [20, 32, 34, 39, 40, 41, 46, 51, 82, 84, 85, 86, 87, 88, 89], "obj": [20, 21, 26, 27, 87], "tabul": [20, 23, 25, 26, 28], "f90": [20, 21, 22, 23, 25, 26, 27, 33, 51, 54, 69, 72, 87, 89, 98], "stand": 20, "connect": [20, 24, 29, 32, 84, 87, 94], "translat": [20, 63, 64, 65, 84, 85, 86, 88, 89], "yet": [20, 27, 38, 61, 64, 83, 88, 89, 96], "due": [20, 50, 60, 61, 66, 72, 78, 79, 84], "flag": [20, 27, 33, 42, 53, 66, 67, 68, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "attempt": [20, 32], "script": [20, 22, 24, 27, 62, 66, 70, 72, 76, 78, 79, 80, 82, 85, 86, 88, 89, 94, 101], "user_funct": [20, 22, 23, 25, 26], "fatal": [20, 72, 86], "mod": [20, 23, 25, 26, 27, 29, 34, 53, 77, 89], "rememb": [20, 29, 37], "retri": 20, "timestamp": [20, 27], "newer": [20, 46], "turn": [20, 40, 42, 50], "makeflag": [20, 27], "builtin": [20, 27, 79, 81], "fc": [20, 27], "ld": [20, 21, 27], "rm": [20, 27], "src": [20, 27, 87, 88], "addsuffix": [20, 27], "phoni": [20, 27], "makefile_list": 20, "filter": [20, 27, 41, 74, 96], "wildcard": [20, 27], "mess": 20, "surpris": 20, "harm": 20, "switch": [20, 37, 46, 74, 81, 82, 84, 85, 86, 87, 88, 89], "artifact": [20, 27, 67, 79], "inde": [20, 26], "slightli": [20, 26, 37, 53], "account": [20, 30, 31, 37, 63, 73, 80, 81, 83, 89], "still": [20, 22, 23, 24, 37, 42, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "itself": [20, 26, 28, 30, 39, 50, 58, 63, 64, 66, 72, 88, 101], "enough": [20, 21, 29, 30, 37, 40, 42], "lot": [20, 24, 35], "particularli": [20, 29, 32, 34, 48, 79], "troublesom": [20, 37], "stai": [20, 32, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "confid": 20, "soon": [20, 26, 27, 60, 63, 64, 80], "alon": 20, "neat": [20, 32], "trick": 20, "snippet": [20, 27, 50, 68, 69], "fine": [20, 30, 53], "fflag": 20, "include_dir": 20, "opt": 20, "some_dep": 20, "mayb": [20, 27], "unexpect": [20, 21, 29, 42], "undefin": [20, 21, 27, 29, 30, 36, 37, 38, 39, 42, 57, 88], "inherit": [20, 50], "tend": 20, "outcom": [20, 101], "achiev": [20, 25, 26, 50], "think": [20, 23, 27, 37, 39, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "mix": [20, 32, 37, 85, 86], "carefulli": 20, "awar": [20, 26, 30, 40], "implic": 20, "caveat": 20, "pop": [20, 80, 81, 82, 84, 85, 86, 87, 88, 89], "hard": [20, 27, 29, 30, 36, 84], "encount": [20, 23, 45], "possibli": [20, 29], "happili": 20, "compar": [20, 29, 30, 32, 37, 38, 39, 53, 54, 63, 64, 89], "usr": [20, 21, 27, 28, 33], "path": [20, 26, 27, 28, 53, 61, 65, 70, 87, 88, 89, 95], "locat": [20, 21, 23, 29, 30, 32, 35, 37, 39, 41, 69, 81, 83, 85, 86, 87], "lib": [20, 21, 26, 27, 28, 74], "strip": [20, 33, 72, 74], "prudent": 20, "pai": [20, 30], "low": [20, 25, 30, 32, 77, 78, 93, 99, 101], "plenti": [20, 44], "ninja": 20, "my_proj": 20, "meson_vers": 20, "49": [20, 29, 32, 67, 77], "somewhat": [20, 42], "53": [20, 30, 32, 36], "dir": [20, 70, 72, 80, 85, 87, 88, 89], "host": [20, 39, 59, 60, 61, 83, 84, 85, 87, 88, 101], "arch": 20, "20200130": 20, "bfd": 20, "34": [20, 32, 37], "famili": [20, 72], "bin": [20, 27, 28], "ex": [20, 21, 22, 23, 25, 26, 27, 28, 40, 78], "dep": [20, 27, 85], "hack": 20, "certain": [20, 24, 27, 32, 36, 37, 41, 45], "told": 20, "had": [20, 30, 37, 41, 42, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "tell": [20, 23, 26, 55], "figur": 20, "strategi": [20, 27, 65], "cmakelist": [20, 85, 89], "cmake_minimum_requir": 20, "add_execut": 20, "identif": [20, 65], "abi": [20, 46], "f95": [20, 79], "skip": [20, 45, 53, 84, 86, 88], "tri": [20, 28, 83], "fortun": [20, 24], "hint": [20, 88, 89], "rerun": 20, "manner": [20, 46], "togeth": [20, 22, 29, 30, 38, 58, 63, 66, 83], "preprocess": [20, 65], "cmakefil": 20, "pp": 20, "dyndep": 20, "dd": [20, 37, 40], "accomplish": [20, 101], "concern": [20, 47, 57], "ourselv": 20, "shortli": 20, "recap": 20, "offici": [20, 46, 57, 101], "organis": [20, 23, 69], "manpag": [20, 46], "instruct": [21, 24, 25, 47, 53, 67, 68, 69, 71, 72, 81, 84, 85, 86, 89, 101], "human": [21, 24, 77], "consequ": [21, 26], "understand": [21, 45, 65], "averag": [21, 35, 99], "year": [21, 40, 42, 50, 57, 60, 65, 68, 69, 70, 72, 74, 75, 77, 83, 84, 86, 87, 91], "customis": [21, 22], "remark": [21, 24], "complain": 21, "wrong": [21, 36, 42], "typo": [21, 74, 76, 80, 81, 82, 84, 87], "instanc": [21, 23, 28, 39, 50, 65, 70, 84], "unknown": [21, 49, 86], "broken": [21, 69, 70], "inadvert": 21, "prgoram": 21, "hello3": 21, "unclassifi": 21, "f951": 21, "succe": 21, "characteris": 21, "hello2": 21, "lib64": 21, "crt1": 21, "_start": 21, "0x20": 21, "collect2": 21, "exit": [21, 36, 39, 40, 67, 81, 86, 88], "cygwin": [21, 22, 26, 46], "optimis": 21, "footprint": 21, "debug": [21, 27, 63, 64, 65, 66, 67, 69, 72, 74, 76, 81, 87, 88, 89, 91, 96, 98, 100, 101], "pre": [22, 42, 47, 67, 69, 72, 87], "peopl": [22, 57, 61, 64, 70, 72, 76, 78, 79, 80, 83, 84], "far": [22, 26, 42, 49, 73, 77, 78, 79, 83], "unfortun": [22, 28], "suitabl": [22, 27, 86], "redistribut": 22, "ldd": [22, 28], "walker": [22, 26, 28], "consult": 22, "said": [22, 27], "proper": [22, 64, 65, 89], "intermedi": [22, 23, 25, 63, 99], "skeleton": 22, "dec": [22, 26, 85], "dllexport": [22, 26], "dll": [22, 25, 26, 28], "control": [22, 27, 32, 34, 47, 52, 54, 63, 80, 87, 88, 97, 99], "necessarili": [22, 29, 30, 32], "Then": [22, 28, 37, 41, 45], "tabulate_f": 22, "func1": 22, "freedom": 22, "conveni": [23, 29, 37, 41, 97], "arrang": 23, "belong": [23, 32, 38], "assist": 23, "extern": [23, 27, 28, 34, 44, 47, 62, 67, 68, 74, 79, 81, 83, 86, 88, 89, 101], "advent": 23, "suppos": [23, 29], "sub": [23, 31, 32, 38, 87], "cd": [23, 27, 37, 41], "consecut": [23, 29, 40, 42], "subdirectori": [23, 72], "scatter": [23, 29], "luckili": 23, "java": [24, 60], "characterist": [24, 82], "taken": [24, 29, 36, 37, 40, 41, 42, 68], "batch": 24, "shell": [24, 40, 46], "concentr": [24, 63, 64, 65, 66, 67], "principl": [24, 38, 98, 99], "famou": 24, "consol": [24, 92, 97], "xterm": 24, "properli": [24, 63, 76, 89], "finish": [24, 27, 40, 79], "took": [24, 57], "examin": [25, 30, 32], "xbegin": 25, "xend": 25, "2f10": 25, "sake": 25, "sequenc": [25, 32, 35, 37, 39, 41, 42, 50, 53, 79, 82, 84, 85, 86, 87, 88, 89], "mistak": [25, 72], "stuff": [25, 50], "screen": [25, 32, 54], "gori": 25, "uncommon": 26, "tediou": 26, "imposs": [26, 50], "compact": 26, "shorter": [26, 30, 32, 37, 49], "supportlib": 26, "file3": 26, "ones": [26, 30, 63, 78, 79, 88], "libnam": 26, "lname": 26, "sought": 26, "libpath": 26, "exact": [26, 40], "resort": 26, "extrem": [26, 35], "tacitli": 26, "incorpor": [26, 82, 84], "remain": [26, 29, 30, 32, 35, 37, 41, 85], "outsid": [26, 50, 54], "reli": 26, "heavili": 26, "fpic": [26, 33], "henc": [26, 30, 54, 79], "visibl": 26, "myroutin": 26, "resid": [26, 63], "shortcut": 26, "nm": 26, "000000054f9d7000": 26, "__dynamically_load": 26, "__end__": 26, "0000000000000200": 26, "__file_alignment__": 26, "000000054f9d1030": 26, "__function_mod_f": 26, "000000054f9d1020": 26, "__gcc_deregister_fram": 26, "000000054f9d1000": 26, "__gcc_register_fram": 26, "receiv": [26, 41, 76], "__function_mod_": 26, "Of": [26, 37, 43], "function_mp_f": 26, "caution": [26, 42], "scale": [27, 34, 35, 88, 90, 97, 99], "unix": [27, 40, 87, 88, 90, 91, 93, 94, 96], "port": [27, 46, 80, 83, 89], "That": [27, 28, 29, 30, 35, 37, 39, 41, 42], "flavor": 27, "respons": [27, 40, 74, 76, 77, 89, 97], "yourself": [27, 30], "underestim": 27, "unsuit": 27, "csv": [27, 95], "v1": [27, 37, 41], "reproduc": [27, 30], "fobi": 27, "sh": [27, 40, 66, 74, 77, 88, 89], "test_2_column": 27, "csv_kind": 27, "csv_modul": 27, "csv_paramet": 27, "csv_util": 27, "csv_read_test": 27, "csv_test": 27, "csv_write_test": 27, "seven": [27, 30], "individu": [27, 32, 44, 48, 88], "rc": [27, 29], "test_src": 27, "artefact": 27, "test_obj": 27, "patsubst": 27, "test_ex": 27, "cleanup": [27, 68, 82, 84, 85, 86, 89], "accid": 27, "libcsv": 27, "interlac": 27, "drawback": 27, "scan": [27, 34, 72], "dive": 27, "outlin": 27, "robust": [27, 89, 95], "independ": [27, 29, 42, 67, 88], "map": [27, 35, 78, 79, 80, 81, 84, 85, 86, 87, 88, 89, 91, 96, 98], "foreach": 27, "recurs": [27, 41, 65, 74, 85, 88, 89, 94, 97, 99], "expand": [27, 40, 69, 78, 79, 80, 86, 88, 91], "mechan": [27, 99, 101], "awk": [27, 46], "insensit": [27, 55], "sensit": [27, 32, 97, 99], "ignorecas": 27, "za": 27, "z0": [27, 32], "9_": 27, "count": [27, 30, 32, 34, 35, 37, 38, 40, 41, 53, 78, 80, 87, 89], "twice": 27, "modc": 27, "im": [27, 35, 37, 42, 88], "sprintf": 27, "tolow": 27, "gsub": 27, "usec": 27, "iu": 27, "delimit": [27, 42], "quot": [27, 40, 55, 100], "duplic": [27, 68, 72, 85, 88, 89], "incc": 27, "inc": [27, 51, 60], "empti": [27, 29, 41, 78, 79, 81, 86, 87, 88], "ignor": [27, 32, 40, 41, 51, 68, 84, 85, 86, 88, 89], "assumpt": 27, "stream": [27, 32, 88], "regular": [27, 32, 97], "fail": [27, 32, 37, 38, 39, 40, 57, 66, 86, 89], "my_modul": 27, "parsabl": 27, "parser": [27, 63, 64, 65, 68, 72, 77, 78, 79, 81, 85, 86, 88, 90, 95, 96, 98, 100], "difficulti": [27, 42], "mind": [27, 39, 48, 95], "expens": 27, "speed": [27, 47, 53, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 99], "chmod": [27, 94], "gen": [27, 37, 41, 65], "ff": 27, "handwritten": 27, "gd": 27, "vpath": 27, "test_dep": 27, "pipe": 27, "regener": 27, "unchang": [27, 39, 40], "invoc": [27, 38, 40], "illustr": [28, 30, 37, 93], "ntdll": 28, "cygdriv": 28, "system32": 28, "0x7ff88f2b0000": 28, "kernel32": 28, "0x7ff88e450000": 28, "kernelbas": 28, "0x7ff88b9e0000": 28, "cygwin1": 28, "0x180040000": 28, "cyggfortran": 28, "0x3efd20000": 28, "cygquadmath": 28, "0x3ee0b0000": 28, "cyggcc_": 28, "seh": 28, "0x3f7000000": 28, "accur": [28, 86, 101], "hopefulli": 28, "immedi": [28, 46], "nice": [28, 32, 64], "lucasg": 28, "vast": 28, "subject": [28, 30, 47, 77], "surfac": [28, 35, 93, 94, 97], "ld_library_path": 28, "colon": 28, "rpath": 28, "semicolon": 28, "colleagu": 28, "tsourc": 29, "fsourc": 29, "mask": [29, 30, 32, 37, 41, 74, 89], "correspond": [29, 30, 32, 37, 38, 40, 41, 42, 62], "true": [29, 30, 31, 32, 36, 37, 38, 39, 40, 41, 42, 53, 55, 84, 87], "circuit": [29, 57], "prevent": [29, 88, 101], "divid": [29, 35, 36, 37], "retain": [29, 30, 32, 42, 55, 89], "infin": [29, 35, 36, 37, 42, 88], "ne": [29, 32, 39, 40, 53], "elsewher": [29, 60, 83], "endwher": 29, "obscur": [29, 34], "polymorph": [29, 30, 39, 42, 50, 84, 85, 86, 95], "demo_merg": 29, "tval": 29, "fval": 29, "answer": [29, 32, 37, 39, 41, 42, 68, 101], "chooseleft": 29, "60": [29, 32, 37, 39, 40, 41], "50": [29, 30, 32, 35, 37, 39, 41], "20": [29, 30, 32, 35, 37, 39, 41, 42, 48, 50, 54, 57, 64, 76, 78, 79], "40": [29, 32, 35, 37, 39, 41, 59, 60, 85], "printm": 29, "highest": [29, 42], "lowest": [29, 30, 32], "neg": [29, 30, 35, 36, 37, 40, 41, 55, 81, 84, 86], "3i4": 29, "30": [29, 30, 32, 35, 37, 39, 40, 41, 42, 48, 63, 64, 65, 67, 77], "dim": [29, 30, 34, 35, 38, 41, 80, 87, 88, 89], "replic": [29, 30], "whose": [29, 30, 32, 35, 36, 37, 38, 39, 41, 42], "greater": [29, 30, 32, 34, 35, 36, 37, 41, 42, 53], "demo_pack": 29, "gather": [29, 50], "nonzero": [29, 38], "fmt": [29, 30, 37, 41, 64, 66, 77, 79], "i0": [29, 30, 32, 35, 37, 38, 40, 41, 42], "till": [29, 37], "bat": 29, "cat": [29, 87], "dog": 29, "ncopi": [29, 32], "row": [29, 35, 37, 41, 50, 97], "fifteen": 29, "demo_spread": 29, "a1": [29, 32, 37], "99": [29, 32, 62], "printi": 29, "extent": [29, 35, 79, 87, 88], "TO": [29, 30, 37, 39, 41, 42], "stderr": [29, 84], "error_unit": 29, "stdin": [29, 55], "input_unit": 29, "stdout": [29, 55, 66], "output_unit": [29, 42], "2d": [29, 37, 41, 49, 97, 99], "1x": [29, 30, 32, 35, 36, 37, 40, 41, 42], "ceil": [29, 34, 41, 42, 88, 89], "log10": [29, 34, 36, 37, 41, 42, 88], "ab": [29, 32, 34, 36, 41, 42, 77, 83, 85, 87, 89, 99], "enddo": [29, 30, 32, 35, 36, 37, 39, 40, 41, 42], "placement": [29, 84], "difficult": [29, 47], "condit": [29, 32, 39, 40, 51, 66, 77, 83, 89], "alter": [29, 30, 42], "ith": [29, 37, 41], "q": [29, 32, 39], "demo_unpack": 29, "print_matrix_int": [29, 37, 41], "biggest": [29, 36, 37, 41], "buffer": [29, 37, 41, 86], "entiti": [29, 30, 31, 32, 36, 37, 39, 41, 42, 54, 88], "demo_alloc": 29, "real32": [29, 35, 36, 37, 40, 42, 55], "256": [29, 30, 32, 39, 68], "istat": [29, 40], "endif": [29, 32, 35, 36, 37, 38, 39, 40, 41, 42], "errmsg": [29, 38, 39, 40, 80], "intentout": 29, "nonpoint": [29, 41], "subscript": [29, 81, 82, 86], "subset": [29, 30, 64, 83, 97], "substr": [29, 32, 81, 82, 85], "parent": [29, 38, 40, 50, 54, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "ref": [29, 72, 85], "imaginari": [29, 35, 37, 42, 55], "subobject": 29, "demo_is_contigu": 29, "1000": [29, 30, 35, 36, 40, 42, 72, 78], "IN": [29, 32, 37, 41], "disassoci": [29, 30, 37, 39, 41, 87], "absent": [29, 30, 32, 35, 37, 38, 39, 41, 42], "upper": [29, 32, 35, 38, 42, 49, 79, 100], "note1": [29, 30], "satisfi": [29, 35, 101], "opinion": 29, "demo_lbound": 29, "m_bound": 29, "msub": 29, "esub": 29, "csub": 29, "IF": [29, 81], "WILL": [29, 32], "21": [29, 32, 33, 37, 65, 77], "co_ubound": [29, 34], "co_lbound": [29, 34], "storage_s": [29, 31, 34, 37, 42, 68], "bit_siz": [29, 34, 42], "btest": [29, 34, 81, 88], "demo_rank": 29, "bunch": 29, "mytyp": 29, "any_th": 29, "query_int": 29, "70": [29, 32, 39, 101], "query_anyth": 29, "data_object": 29, "select_rank": [29, 82], "eq": [29, 32, 35, 36, 39, 40, 42, 53], "demo_shap": 29, "42": [29, 32, 36, 42, 85, 86], "measur": [29, 32, 35, 40, 72], "magnitud": [29, 30, 35, 37, 42], "demo_s": 29, "arr1": [29, 30, 37], "arr2": [29, 30, 37], "OF": [29, 30], "demo_ubound": 29, "m2_bound": 29, "maximum": [29, 35, 36, 37, 38, 40, 41, 77], "inclus": [29, 30, 35, 42, 83, 84], "offset": [29, 40], "demo_maxloc": 29, "22": [29, 30, 32, 37, 40, 41, 46, 57, 63, 64, 70, 74, 80, 83, 88, 101], "44": [29, 32, 37, 41, 85], "55": [29, 30, 32], "47": [29, 32, 85], "48": [29, 32, 41, 85, 86], "max": [29, 34, 35, 40, 76, 82, 84, 86, 87], "demo_minloc": 29, "13": [29, 30, 32, 35, 36, 72, 80], "smallest": [29, 32, 36, 37, 40, 42], "gt": [29, 32, 35, 36, 53], "eqv": [29, 39, 53], "ie": [29, 30, 32, 35, 37, 41, 42], "d1": [29, 37, 41, 42], "d2": [29, 37, 41, 42], "ddim": [29, 37, 41], "dn": [29, 37, 41, 99], "li": [29, 35, 40, 42], "ei": 29, "demo_findloc": 29, "ibox": 29, "AS": [29, 32], "printl": 29, "l1": [29, 30, 32, 36], "manipul": [29, 34, 38, 55, 66, 67, 83, 90, 91, 94, 95, 98, 101], "revers": [29, 30, 32, 49, 72, 84, 89, 97, 98], "interchang": 29, "demo_transpos": 29, "xx": [29, 32, 37, 38, 42], "1055": 29, "reduct": [29, 37, 38, 41, 68, 69, 72, 74, 79, 84], "conjunct": [29, 64, 65, 66, 67], "minu": [29, 30], "elid": 29, "demo_al": 29, "bool": [29, 30], "demo_ani": 29, "myriad": 29, "bigger": [29, 39, 42], "23": [29, 32, 36, 40, 61, 64, 77, 78, 79, 80, 83, 89], "demo_count": 29, "mymask": 29, "24": [29, 30, 32, 35, 36, 37, 40, 41, 72, 77, 78, 79, 80, 83, 89], "3i3": [29, 37, 41], "unequ": [29, 30], "3l3": 29, "modulo": [29, 34, 40, 89], "FOR": [29, 32, 51], "handi": [29, 30, 37, 41, 47], "null": [29, 31, 32, 34, 39, 66, 72, 79, 80, 81, 82, 86, 87, 89], "demo_maxv": 29, "lt": [29, 32, 53], "255": [29, 30, 40, 67, 68, 76, 77], "demo_minv": 29, "3x": [29, 35], "g4": 29, "new_lin": [29, 34], "2147483647": [29, 30, 36, 37, 40, 42], "demo_product": 29, "nl": [29, 32], "no_dim": 29, "p1": 29, "p2": 29, "factori": [29, 35, 38, 84], "25": [29, 30, 32, 35, 37, 65, 70], "endblock": [29, 30, 32, 35, 42], "with_dim": 29, "rect": 29, "plane": [29, 99], "elimin": 29, "000000": [29, 35, 36, 37, 41, 42], "00000": [29, 35, 37, 40, 42], "120": [29, 32, 35, 57, 63], "0000": [29, 30, 35, 37, 42], "720": [29, 35, 41], "5040": [29, 35], "000": [29, 32, 35, 39, 40], "40320": [29, 35], "00": [29, 32, 35, 37, 42, 66, 67, 72], "362880": [29, 35], "3628800": [29, 35], "351000000": 29, "4875": 29, "72000": 29, "1719927e": 29, "26": [29, 30, 32, 42], "400": [29, 42, 88], "1800": 29, "72": [29, 32], "6000": 29, "120000": 29, "960": [29, 72], "200": [29, 36, 37, 41, 42, 83], "3200": 29, "16200": 29, "51200": 29, "125000": 29, "259200": 29, "accumul": [29, 41], "compens": 29, "demo_sum": 29, "100": [29, 30, 32, 35, 36, 37, 39, 41, 42, 49, 53, 62, 83], "300": [29, 40, 68, 79, 80], "volum": [29, 55, 99], "10000": [29, 35, 36], "300000": 29, "382": 29, "746": 29, "109": [29, 32], "182": [29, 65, 68], "273": [29, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84], "364": [29, 70, 72, 74, 76], "66": [29, 32], "35": [29, 32, 101], "pad": [29, 30, 31, 32, 37, 49, 77, 78, 84, 85, 88, 89], "permut": 29, "among": [29, 37, 45, 61, 67], "reorder": 29, "Being": 29, "definit": [29, 32, 35, 37, 39, 40, 50, 54, 69, 72, 74, 80, 86, 87, 88, 94, 95, 96, 97, 98, 99, 100], "repeatedli": 29, "until": [29, 30, 32, 35, 36, 40, 41, 49, 67], "insert": [29, 32], "vari": [29, 30, 32, 37, 40, 42, 48, 49, 100], "rapidli": [29, 83], "demo_reshap": 29, "rh": [29, 32, 37, 41, 42], "basics0": 29, "flip": [29, 30, 85], "height": [29, 55], "bitwis": [30, 38, 42], "boz": [30, 42, 76, 86, 89], "endian": 30, "ness": 30, "complement": [30, 42, 83], "sign": [30, 32, 34, 35, 36, 40, 42, 53, 77, 85, 86, 88, 89], "octal": [30, 32], "hexadecim": [30, 32], "transfer": [30, 34, 74, 76, 77, 78, 79, 80, 84, 87, 89], "largest": [30, 36, 37, 42], "msb": 30, "lsb": 30, "wise": [30, 38], "demo_bg": 30, "int8": [30, 32, 42], "int16": [30, 32, 42], "int32": [30, 32, 40, 42], "int64": [30, 32, 40, 42], "127": [30, 32, 42, 57, 63], "0001": [30, 37], "127_int8": 30, "AND": [30, 37, 38, 41], "unsign": 30, "1l": 30, "b0": [30, 32, 42], "64_int8": 30, "todai": [30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "0128": 30, "10000000": [30, 35], "0096": 30, "10100000": 30, "0064": 30, "11000000": 30, "0032": 30, "11100000": 30, "00000000": [30, 35, 42], "00100000": 30, "01000000": 30, "01100000": 30, "demo_bgt": 30, "treat": [30, 37, 41, 42, 88], "rightmost": [30, 32], "leftward": 30, "demo_bl": 30, "4x": [30, 35], "demo_blt": 30, "101011010": 30, "demo_bit_s": 30, "integer_kind": 30, "i3": [30, 32, 37, 40, 41], "0_int8": [30, 42], "0_int16": [30, 42], "0_int32": [30, 42], "0_int64": [30, 42], "po": 30, "increas": [30, 35, 65, 81], "bitsiz": 30, "demo_btest": 30, "32768": 30, "1024": [30, 36], "b32": 30, "_": [30, 32], "l2": [30, 54], "33856": 30, "11111111111111110111101111000000": 30, "00000000000000001000010001000000": 30, "1000010001000000": 30, "fffffftffftfffftffffffffffffffff": 30, "________________": 30, "____": 30, "___": 30, "______": 30, "isol": [30, 85], "note2": 30, "regist": [30, 40, 74, 83, 89], "never": [30, 36], "nonetheless": 30, "demo_storage_s": 30, "c_sizeof": [30, 34, 68], "leftmost": [30, 32], "demo_leadz": 30, "80": [30, 32, 39, 89], "150": 30, "aka": [30, 35, 79], "Such": [30, 54], "11111111111111111111111101101010": 30, "11111111111111111111111110011100": 30, "11111111111111111111111111001110": 30, "00000000000000000000000000000000": 30, "00000000000000000000000000110010": 30, "00000000000000000000000001100100": 30, "00000000000000000000000010010110": 30, "demo_popcnt": 30, "pretti": [30, 79, 87], "b64": 30, "01010": 30, "3f": [30, 32, 39, 42], "1111111": 30, "1010": [30, 72], "111111111111111": 30, "1111111111111111111111111111111": 30, "31": [30, 32, 36], "111111111111111111111111111111111111111111111111111111111111111": [30, 42], "63": [30, 32, 37], "atomic_and": [30, 34], "atomic_fetch_and": [30, 34], "atomic_fetch_or": [30, 34], "atomic_fetch_xor": [30, 34], "atomic_or": [30, 34], "atomic_xor": [30, 34], "pariti": [30, 34, 74], "demo_poppar": 30, "___________": 30, "demo_trailz": 30, "bigi": 30, "96": [30, 32, 37], "11111111111111111111111111111111": 30, "00000000000000000000000000000001": 30, "00000000000000000000000001100000": 30, "0000000000000000000000000000000000000000000000000000000000100000": 30, "0000000000000000000000000000000000000000000000000010000000000000": 30, "0000000000000000000000000000000000000000000000000000000000010000": 30, "shift": [30, 34, 37, 81, 84, 89], "hex": [30, 32], "kept": [30, 42], "1111111111111111": 30, "11111111111111110000000000000000": 30, "11111111110000000000000000": 30, "1111111111000000": 30, "circular": [30, 37, 41], "nonneg": [30, 32, 35, 38], "demo_dshiftl": 30, "printit": 30, "11111000000000000000000000000000": 30, "00000111111111111111111111111111": 30, "11111111111111111111111111100000": 30, "134217728": 30, "00000000000000000000000000011111": 30, "134217727": 30, "alphabet": [30, 42, 44, 47], "abcdefghijklmnop": 30, "abcdefghijklmnopabcdefghijklmnop": 30, "abcdefghijklmnopabcdefghij": 30, "klmnopabcdefghij": 30, "dshifr": 30, "pair": [30, 39, 50, 53, 55], "demo_dshiftr": 30, "0000000000000000000000000001111111111111111111111111111111100000": 30, "00000000000000000000000000011111111111111111111111111111111": 30, "1342177280": 30, "ternari": 30, "raster": 30, "blend": 30, "th": [30, 40], "demo_merge_bit": 30, "if_on": 30, "if_zero": 30, "msk": 30, "41": [30, 32, 36, 85], "base2": 30, "1010101010101010": 30, "0101010101010101": 30, "b16": 30, "32767_int16": 30, "12345": [30, 36, 42], "0000000000010101": 30, "1234": [30, 38, 41], "32767": [30, 42], "32751": 30, "5877": 30, "frompo": 30, "topo": 30, "adjac": [30, 35, 36], "past": [30, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "demo_mvbit": 30, "intfrom": 30, "intto": 30, "abcd_int": 30, "t30": 30, "t40": 30, "AT": [30, 32], "abcd": [30, 32], "int_swap32": 30, "intin": 30, "intout": 30, "big": [30, 35, 40, 42, 49, 83], "byte1": 30, "byte4": 30, "byte2": 30, "byte3": 30, "01111111111111111111111111111111": 30, "1684234849": 30, "01100100011000110110001001100001": 30, "1633837924": 30, "dcba": 30, "01100001011000100110001101100100": 30, "justifi": [30, 32], "calcul": [30, 31, 35, 36, 37, 41, 50, 53, 63, 79, 85, 86, 88, 89, 97, 99], "increment": [30, 40, 67, 68, 86], "compos": [30, 32], "demo_ibit": 30, "0101010101011101": 30, "5432109876543210": 30, "10th": [30, 72], "proce": 30, "0010011000000000": 30, "0000000000000011": 30, "0000000000001111": 30, "0000000000010011": 30, "uncondition": 30, "demo_ibclr": 30, "0000000000111111": 30, "4096": 30, "1_int16": 30, "0000000000110111": 30, "1111111111111101": 30, "1111111111111011": 30, "1111111111110111": 30, "1111111111101111": 30, "demo_ibset": 30, "0000000000000110": 30, "0001000000000110": 30, "4102": 30, "4100": 30, "0000000000000010": 30, "0000000000000100": 30, "0000000000001000": 30, "0000000000010000": 30, "0_kind": [30, 37], "demo_maskl": 30, "i11": [30, 36], "11100000000000000000000000000000": 30, "268435456": 30, "11110000000000000000000000000000": 30, "16777216": 30, "11111111000000000000000000000000": 30, "1048576": 30, "11111111111100000000000000000000": 30, "65536": 30, "11111111111111111111000000000000": 30, "11111111111111111111111100000000": 30, "11111111111111111111111111110000": 30, "demo_maskr": 30, "t5": 30, "00000000000000000000011111111111": 30, "00000000000000000000000000001111": 30, "00000000000000000000000011111111": 30, "4095": 30, "00000000000000000000111111111111": 30, "65535": 30, "00000000000000001111111111111111": 30, "1048575": 30, "00000000000011111111111111111111": 30, "16777215": 30, "00000000111111111111111111111111": 30, "268435455": 30, "00001111111111111111111111111111": 30, "OR": [30, 38, 60], "xor": [30, 38, 84], "demo_ipar": 30, "00100100": 30, "01101010": 30, "b8": 30, "01001110": 30, "demo_ial": 30, "demo_iand": 30, "00000000000000000000000000000011": 30, "demo_iani": 30, "10101010": 30, "11101110": 30, "10101110": 30, "disjunct": 30, "demo_ieor": 30, "0000001111110000": 30, "1008": 30, "0000001111001111": 30, "975": [30, 72], "4098": 30, "boolean": [30, 42, 53, 55], "demo_ior": 30, "00110101": 30, "45": [30, 32, 35, 37, 85], "00101101": 30, "00111101": 30, "61": [30, 32], "decim": [30, 32, 36, 40, 42, 86], "negat": [30, 86], "truth": 30, "demo_not": 30, "13741": 30, "11111111111111111100101001010011": 30, "13740": 30, "00000000000000000011010110101100": 30, "circularli": [30, 37, 41, 72], "dictat": 30, "opposit": [30, 35, 37, 53], "absolut": [30, 35, 36, 37, 40], "lost": [30, 42], "unshift": 30, "unalt": 30, "demo_ishftc": 30, "11111111111111111111111101111111": 30, "11111111111111110111111111111111": 30, "11111111011111111111111111111111": 30, "1017": 30, "8388608": 30, "cshift": [30, 34, 80, 84], "eoshift": [30, 34, 80], "demo_ishft": 30, "vacat": [30, 37, 41], "demo_shifta": 30, "ival": 30, "oval": 30, "01010101010101010101010101010101": 30, "10101010101010101010101010101010": 30, "1431655765": 30, "00000010101010101010101010101010": 30, "44739242": 30, "1431655766": 30, "11111101010101010101010101010101": 30, "44739243": 30, "demo_shiftl": 30, "ivalu": 30, "elem": 30, "800": 30, "10101010101010101010101000000000": 30, "1431655936": 30, "01010101010101010101010000000000": 30, "1431655424": 30, "11111111111111111111111000000000": 30, "demo_shiftr": 30, "00000000001010101010101010101010": 30, "2796202": 30, "00000000010101010101010101010101": 30, "5592405": 30, "00000000011111111111111111111111": 30, "8388607": 30, "c_prt_1": 31, "c_ptr_2": 31, "cptr_2": 31, "c_ptr_1": 31, "c_ptr": [31, 89], "c_funptr": 31, "c_ptr1": 31, "demo_c_associ": 31, "association_test": 31, "fptr": 31, "cprt": 31, "fprt": 31, "interoper": [31, 50, 55, 79, 88, 92, 94], "demo_c_f_point": 31, "my_routin": 31, "myc_func": 31, "demo_c_f_procpoint": 31, "getiterfunc": 31, "cfunptr": 31, "myfunc": 31, "demo_c_funloc": 31, "sqrt": [31, 34, 37, 40, 42, 54, 80, 81, 88], "coindex": [31, 38], "nonpolymorph": [31, 38, 41], "occupi": [31, 39], "size_t": 31, "area": [31, 50, 55], "demo_c_sizeof": 31, "unusu": [31, 37], "demo_len": 32, "astr": 32, "many_str": 32, "underlin": 32, "THE": 32, "BE": 32, "tom": [32, 57, 97], "dick": 32, "harri": [32, 80, 84], "inquiri": [32, 33, 34, 39, 42, 74, 80, 83, 85, 86, 88, 89], "str": 32, "38": [32, 36, 37, 40, 101], "nonelement": 32, "newlin": [32, 66], "exhaust": 32, "occas": 32, "ascii": [32, 34, 42, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "collat": [32, 37], "10646": [32, 42], "demo_new_lin": 32, "embed": 32, "exce": [32, 37, 42], "simplist": 32, "fake": 32, "random_numb": [32, 34, 74, 82], "xxxx": 32, "xxxxxxx": 32, "xxxxxxxxxx": 32, "xxxxxxxxx": 32, "xxxxxxxx": 32, "xxxxxx": 32, "xxx": 32, "xxxxx": 32, "selected_char_kind": [32, 34], "concaten": [32, 49], "demo_repeat": 32, "1234567890": [32, 37], "______________________________________________________________________": 32, "1234567890123456789012345678901234567890123456789012345678901234567890": 32, "escap": [32, 82, 84, 85, 86, 87, 88, 89], "unprint": 32, "27": [32, 66, 81], "2j": 32, "ansi": [32, 95], "nul": 32, "01": 32, "soh": 32, "02": [32, 42], "stx": 32, "03": 32, "etx": 32, "04": [32, 42, 46], "eot": 32, "05": [32, 36, 37, 40], "enq": 32, "06": 32, "ack": 32, "07": [32, 35, 36], "bel": 32, "08": [32, 35, 36, 79], "09": [32, 35, 37, 42], "ht": 32, "vt": 32, "np": 32, "cr": 32, "si": 32, "dle": 32, "dc1": 32, "dc2": 32, "19": [32, 35, 57, 62, 69, 81, 86, 87], "dc3": 32, "dc4": 32, "nak": 32, "syn": 32, "etb": 32, "em": 32, "esc": 32, "28": [32, 37, 38, 41, 86], "29": [32, 37, 72], "36": [32, 35, 36, 37], "39": [32, 37, 58, 76, 85], "43": [32, 85], "46": [32, 61, 85], "51": [32, 86], "52": [32, 86], "54": 32, "56": [32, 35], "57": [32, 35, 40], "58": 32, "59": [32, 37, 40, 65], "62": 32, "65": 32, "67": [32, 35], "68": 32, "69": [32, 101], "71": 32, "73": [32, 61], "74": 32, "75": [32, 79], "76": 32, "78": 32, "79": [32, 79], "81": [32, 80], "82": [32, 61], "83": [32, 61], "84": 32, "85": [32, 62, 79], "86": [32, 35], "87": [32, 67], "88": [32, 35], "89": [32, 62], "91": 32, "92": 32, "93": [32, 99], "94": [32, 35, 67], "97": [32, 62], "101": [32, 35, 42, 62], "102": 32, "103": 32, "104": 32, "105": [32, 57], "106": [32, 89], "107": [32, 57], "108": [32, 57], "110": [32, 37, 41], "111": 32, "112": [32, 62], "113": [32, 57], "114": [32, 57, 72], "115": [32, 57], "116": [32, 57, 63], "117": [32, 57, 63, 64, 65], "118": [32, 35, 57], "119": [32, 57], "121": [32, 35, 57, 63], "122": [32, 57, 63], "123": [32, 57], "124": [32, 57], "125": [32, 36, 57], "126": [32, 42, 57], "del": 32, "demo_achar": 32, "o0": [32, 33], "uppercas": 32, "miniscul": 32, "iend": 32, "toupper": 32, "majuscul": 32, "1000001": 32, "m_attr": 32, "demo_char": 32, "printabl": 32, "z2": [32, 35, 42], "0a": 32, "1e": 32, "646": [32, 85, 88], "1991": 32, "demo_iachar": 32, "abcdefg": 32, "thru": 32, "ebcdic": 32, "demo_ichar": 32, "occurr": [32, 72], "greatest": [32, 37], "demo_index": 32, "1234567890123456789012345678901234567890": 32, "presenc": [32, 89], "demo_scan": 32, "ao": 32, "isalnum": 32, "3c": 32, "isalpha": 32, "isascii": 32, "isblank": 32, "iscntrl": 32, "isdigit": 32, "isgraph": 32, "islow": 32, "isprint": 32, "ispunct": 32, "isspac": 32, "isupp": 32, "isxdigit": 32, "unmatch": 32, "caus": [32, 57, 80], "demo_verifi": 32, "abcdefghijklmnopqrstuvwxyz": [32, 42], "upp": 32, "punc": 32, "prnt": 32, "abba": 32, "ffoorrttrraann": 32, "nartrof": 32, "categor": 32, "abc": 32, "def": 32, "cde": 32, "fghi": 32, "jklmno": 32, "pqrstu": 32, "vwxyz": 32, "nonprint": 32, "me": [32, 39, 79], "ok": 32, "nope": 32, "rarer": 32, "harder": 32, "fortran_int": 32, "3044848": 32, "septemb": [32, 65, 77, 78, 80, 83], "3000": [32, 35], "isint": 32, "8x": 32, "lout": 32, "0123456789": 32, "fortran_symbol_nam": 32, "a_": 32, "_a": 32, "fortran_nam": 32, "alphamer": 32, "nn": 32, "hhhhh": 32, "checkform": 32, "abcdefabcdef0123456789": 32, "af43d": 32, "dash": 32, "dusti": [32, 37, 42], "corner": [32, 37, 42], "more_verifi": 32, "howdi": 32, "tran": 32, "ri": 32, "lexic": 32, "string_a": 32, "stringb": 32, "string_b": 32, "ge": [32, 35, 53], "le": [32, 35, 53, 99], "latter": 32, "demo_lg": 32, "19a": 32, "cba": 32, "012": 32, "3456789": 32, "fghijklmnopqrstuvwx": 32, "yz": 32, "abcdefghijk": 32, "lmnopqrstuvwxyz": 32, "demo_lgt": 32, "demo_l": 32, "demo_llt": 32, "demo_adjustl": 32, "demo_adjustr": 32, "12345678901234567890": 32, "12345678901234567890123456789012345678901234567890": 32, "demo_len_trim": 32, "untrim": 32, "el": 32, "tablet": 32, "xxxxxxxxxxxxxxx": 32, "demo_trim": 32, "bracket": 32, "ten": [32, 42], "demo_compiler_vers": 33, "4a": 33, "gfortran_2a42023b310fa28d": 33, "mtune": 33, "march": [33, 72, 87], "auxbas": 33, "app_main": 33, "wall": 33, "wextra": 33, "wimplicit": 33, "fmax": 33, "fcheck": 33, "fbacktrac": 33, "fcoarrai": [33, 68], "fpre": 33, "finclud": 33, "nvfortran": [33, 43, 48], "app": [33, 65, 67, 68, 74, 101], "minform": 33, "mbackslash": 33, "mbound": 33, "mchkptr": 33, "mchkstk": 33, "traceback": 33, "nvfortran_78229dce997517a4": 33, "ibuild": 33, "20210609_000000": 33, "ifort_5c58216731706f11": 33, "byterecl": 33, "2a": 33, "spread": [34, 82, 87, 89], "is_contigu": [34, 37, 42], "lbound": [34, 38, 42, 76, 87, 88], "maxloc": [34, 37, 41, 81, 82, 87, 88, 89], "minloc": [34, 37, 81, 82, 87, 88, 89], "findloc": [34, 37, 41, 74, 81, 82, 89], "transpos": [34, 35, 37, 41, 80, 88, 89], "maxval": [34, 37, 41, 77, 87], "minval": [34, 35, 37, 41, 77, 87], "bge": [34, 84], "bgt": [34, 84], "ble": [34, 84], "blt": [34, 84], "leadz": 34, "popcnt": 34, "poppar": 34, "trailz": [34, 65], "dshiftl": [34, 37, 41], "dshiftr": [34, 37, 41], "merge_bit": 34, "mvbit": [34, 84, 88], "ibit": [34, 84, 87, 88], "ibclr": [34, 81], "ibset": [34, 81, 87], "maskl": 34, "maskr": 34, "ipar": [34, 74], "iall": 34, "iand": [34, 80], "iani": 34, "ieor": 34, "ior": [34, 88], "ishftc": 34, "ishft": [34, 81, 89], "shifta": 34, "shiftl": [34, 89], "shiftr": [34, 89], "achar": [34, 42, 88], "iachar": [34, 42], "ichar": [34, 42], "lge": [34, 81, 87, 89], "lgt": [34, 81, 87, 89], "lle": [34, 81, 87, 89], "llt": [34, 81, 87, 89], "adjustl": [34, 40, 87, 88], "adjustr": [34, 87, 89], "len_trim": [34, 80, 87], "compiler_opt": 34, "compiler_vers": 34, "bind": [34, 50, 74, 77, 82, 88, 89, 93, 94, 99, 100], "c_associ": [34, 88], "c_f_procpoint": 34, "c_funloc": 34, "aco": [34, 37, 42], "acosh": [34, 37, 42], "asin": [34, 37, 42, 89], "asinh": [34, 37, 42], "atan": [34, 37, 42, 88], "atan2": [34, 37, 42], "atanh": [34, 37, 42], "cosh": [34, 37, 42, 88], "sinh": [34, 37, 42, 88], "tan": [34, 37, 42], "tanh": [34, 37, 42], "random_se": [34, 74], "exp": [34, 37, 42, 88], "hypot": [34, 80], "bessel_j0": 34, "bessel_j1": 34, "bessel_jn": 34, "bessel_y0": 34, "bessel_y1": 34, "bessel_yn": 34, "erf": 34, "erfc": 34, "erfc_scal": 34, "log_gamma": 34, "expon": [34, 40, 42, 55, 84], "fraction": [34, 37], "nearest": [34, 37, 42, 88], "rrspace": [34, 88, 89], "set_expon": [34, 79, 87], "epsilon": [34, 35, 37, 82], "maxexpon": [34, 84], "minexpon": [34, 84], "radix": [34, 42], "tini": [34, 37], "aint": [34, 42, 85, 88], "anint": [34, 42, 88], "conjg": [34, 41, 42, 88], "dprod": [34, 88], "floor": [34, 35, 42, 89], "dot_product": [34, 42, 81, 87], "co_arrai": 34, "co_index": 34, "co_broadcast": [34, 86], "co_max": [34, 85], "co_min": [34, 85], "co_reduc": [34, 41, 85], "co_sum": [34, 37, 42, 84, 86], "event_queri": 34, "image_index": 34, "num_imag": [34, 88], "this_imag": [34, 80], "atomic_add": 34, "atomic_ca": 34, "atomic_defin": 34, "atomic_fetch_add": 34, "atomic_ref": 34, "miscellan": [34, 62, 85, 88], "extends_type_of": [34, 89], "is_iostat_end": 34, "is_iostat_eor": [34, 89], "same_type_a": [34, 89], "command_argument_count": [34, 80, 86], "get_command": [34, 86, 87], "get_command_argu": [34, 80, 86, 88], "cpu_tim": [34, 87, 88], "date_and_tim": [34, 42, 80, 87, 91], "system_clock": [34, 80, 81, 82, 87, 88], "execute_command_lin": [34, 77], "get_environment_vari": [34, 81, 82, 86, 88], "dot": [34, 37, 39], "aimag": [34, 35, 37, 84], "cmplx": [34, 35, 37, 88, 89], "nint": [34, 37], "dble": [34, 37, 88], "out_of_rang": 34, "someon": 34, "unfamiliar": 34, "encourag": [34, 43, 101], "m_intrins": [34, 89], "agnost": [34, 57], "cli": [34, 65, 67, 68, 69, 70, 83, 96], "tar": 34, "zip": 34, "plain": [34, 85], "portion": [34, 53], "gfdl": 34, "invari": [34, 82], "site": [34, 46, 48, 60], "mark": [34, 86, 88], "therebi": 34, "later": [34, 54, 57, 64], "foundat": [34, 51, 95], "markdown": [34, 62, 65, 89, 101], "trigonometr": [35, 79], "arccosin": 35, "cosin": 35, "arctang": 35, "radian": 35, "demo_aco": 35, "real_kind": [35, 36, 37, 40, 42], "real128": [35, 36, 37, 40, 42], "d2r": 35, "866_real64": 35, "14159265358979323846264338327950288419716939937510": 35, "0_real64": [35, 36], "180": [35, 53, 65, 68], "degre": 35, "86599999999999999": 35, "52364958093182890": 35, "1415926535897931": 35, "5707963267948966": 35, "14159274": 35, "09439516": 35, "57079637": 35, "04719758": 35, "23703575": 35, "06127501": 35, "wikipedia": [35, 37, 41, 73], "hyperbol": 35, "approxim": [35, 37, 40, 42], "demo_acosh": 35, "000000000000000e": 35, "31695789692482": 35, "76274717403909": 35, "arcsin": 35, "sine": [35, 37], "trigonometri": 35, "angl": [35, 53, 94, 95, 96, 97], "hypotenus": 35, "triangl": 35, "ratio": 35, "knew": 35, "track": [35, 40, 53, 68, 99], "rose": 35, "mile": 35, "inclin": 35, "theta": 35, "demo_asin": 35, "rise": 35, "250_dp": 35, "00_dp": 35, "percent": 35, "grade": 35, "5002604899361139e": 35, "002": [35, 40], "4325437375665075": 35, "5000000000000000": 35, "percentag": [35, 50], "slope": 35, "025": 35, "feet": 35, "railroad": 35, "baltimor": 35, "ohio": 35, "friction": 35, "drag": 35, "demo_asinh": 35, "88137358701954305": 35, "tangent": 35, "ident": [35, 41], "arc": 35, "demo_atan": 35, "deg_per_rad": 35, "2957795130823208767981548_real64": 35, "235085437457879": 35, "7853981633974483": 35, "00000000000000": [35, 37], "356194490192345": 35, "135": [35, 68, 69], "0000000000000": [35, 37], "princip": 35, "phase": [35, 67, 72, 74, 91], "arctan": 35, "phasor": 35, "lie": 35, "cartesian": [35, 97], "coordin": [35, 40, 97], "pictur": 35, "indetermin": 35, "sit": 35, "quadrant": 35, "demo_atan2": 35, "5574077": 35, "r2d": 35, "tan2": 35, "polar": 35, "complex_v": 35, "ang": 35, "radiu": [35, 55], "225": [35, 63, 64, 65, 67, 72, 81], "270": [35, 68], "cartesian_to_polar": 35, "f5": 35, "t38": 35, "t54": 35, "doubleprecis": [35, 36, 37, 42], "017453292519943d0": 35, "29578": 35, "3217506": 35, "4636476": 35, "1973956": 35, "3805064": 35, "0000000e": [35, 37, 42], "570796": 35, "7853982": 35, "414214": 35, "356194": 35, "141593": 35, "926991": 35, "712389": 35, "demo_atanh": 35, "demo_co": 35, "g2": 35, "t20": 35, "2000": 35, "000000000000000": 35, "6123233995736766e": 35, "2220446049250313e": 35, "demo_cosh": 35, "54308063481524": 35, "sample_sin": 35, "sphere": 35, "longitud": 35, "latitud": 35, "nashvil": 35, "airport": 35, "bna": 35, "tn": [35, 88], "usa": 35, "lo": [35, 97], "angel": 35, "lax": 35, "ca": [35, 60], "roughli": 35, "demo_sin": 35, "f9": 35, "km": 35, "lata": 35, "lona": 35, "latb": 35, "lonb": 35, "dist": 35, "kilomet": 35, "delta_lat": 35, "delta_lon": 35, "lat1": 35, "lat2": 35, "6371": 35, "union": [35, 42], "geodesi": [35, 97], "geophys": 35, "deg_to_rad": 35, "2886": 35, "4446": 35, "demo_sinh": 35, "nan": [35, 36, 37, 42, 89], "inf": [35, 37], "1752011936438014": 35, "6268604078470190": 35, "33954055725615012": 35, "demo_tan": 35, "165_real64": 35, "16500000000000001": 35, "16651386310913616": 35, "demo_tanh": 35, "1_real64": 35, "1000000000000001": 35, "97045193661345386": 35, "pseudo": [35, 83, 97], "harvest": 35, "pseudorandom": 35, "uniform": [35, 77, 78, 79, 80, 83, 84, 97], "demo_random_numb": 35, "seed": [35, 87], "rand_int": 35, "rand_val": 35, "discret": [35, 99], "carv": 35, "chunk": 35, "100000000": 35, "10003588": 35, "10000104": 35, "10000169": 35, "9997996": 35, "9995349": 35, "10001304": 35, "10001909": 35, "9999133": 35, "10000252": 35, "10000196": 35, "restart": 35, "retriev": [35, 40], "demo_random_se": 35, "674862499": 35, "1750483360": 35, "183136071": 35, "317862567": 35, "682500039": 35, "349459": 35, "344020729": 35, "1725483289": 35, "logarithm": 35, "rais": [35, 36, 88, 89], "cx": 35, "demo_exp": 35, "718282": 35, "12878": 35, "20078": 35, "72284": 35, "709": 35, "782712893384": 35, "demo_log": [35, 42], "71828182845904518d0": 35, "7182818284590451": 35, "804718971": 35, "10714877": 35, "demo_log10": 35, "100000": 35, "1000000": 35, "squar": [35, 37, 47, 97], "radicand": 35, "demo_sqrt": 35, "x2": 35, "41421356237310": 35, "272020": 35, "7861513": 35, "477226": 35, "euclidean": 35, "undu": [35, 37], "underflow": [35, 37], "segment": [35, 40, 66], "demo_hypot": 35, "e0_real32": 35, "5e0_real32": 35, "closest": 35, "500000000": [35, 42], "11803401": 35, "250000000": 35, "0000000": [35, 37, 42], "03077638": 35, "1421356": 35, "0020828": 35, "bessel": [35, 88], "4027": 35, "demo_bessel_j0": 35, "5818": 35, "demo_bessel_j1": 35, "44005058574493350": 35, "n1": 35, "n2": 35, "demo_bessel_jn": 35, "4975773021123450e": 35, "004": [35, 40], "demo_bessel_y0": 35, "demo_bessel_y1": 35, "781212821300289": 35, "demo_bessel_yn": 35, "260": [35, 67, 68], "40586662581222": 35, "frac": 35, "int_0": 35, "__": 35, "t__": 35, "dt": 35, "demo_erf": 35, "17_real64": 35, "17000000000000001": 35, "18999246120180879": 35, "erf_scal": 35, "complementari": 35, "loss": 35, "int_x": 35, "infti": 35, "demo_erfc": 35, "1700000000000000": 35, "8100075387981912": 35, "int_": 35, "asymptot": 35, "ieee": [35, 36, 42, 83, 87, 91, 97], "60559": 35, "demo_erfc_sc": 35, "17d0": 35, "833758302149981": 35, "__gamma__": 35, "_0": 35, "mathrm": 35, "neither": [35, 39, 50], "nor": [35, 39, 50], "demo_gamma": 35, "xa": 35, "fac": 35, "170": [35, 60, 61, 65], "bad": [35, 39, 55, 82, 86, 88, 89], "9916800e": 35, "39916800": 35, "7900160e": 35, "479001600": 35, "2270208e": 35, "7178289e": 35, "3076744e": 35, "0922791e": 35, "5568741e": 35, "4023735e": 35, "2164510e": 35, "4329020e": 35, "7257415615307994e": 35, "7257415615307999e": 35, "gamma_funct": 35, "demo_log_gamma": 35, "693": [35, 88, 89], "6931472": 35, "norm": [35, 54], "l_2": 35, "elment": 35, "demo_norm2": 35, "3f4": 35, "539392": 35, "123106": 35, "385165": 35, "708204": 35, "741657": 35, "774964": 35, "model_compon": 36, "demo_expon": 36, "interrog": 36, "demo_fract": 36, "178": [36, 65, 68], "1387e": 36, "5700439": 36, "demo_nearest": 36, "g20": 36, "0000038146973": 36, "9999961853027": 36, "762939453125000e": 36, "reciproc": 36, "demo_scal": 36, "570043862": 36, "demo_setexp": 36, "74716": 36, "7891": 36, "demo_spac": 36, "sgl": 36, "dbl": 36, "0_sgl": 36, "0_dbl": 36, "1920929e": 36, "9999999": 36, "9604645e": 36, "220446049250313e": 36, "016": 36, "demo_digit": 36, "143": [36, 64], "33d0": 36, "nearli": 36, "neglig": 36, "little_numb": 36, "delta": [36, 67], "estim": 36, "halt": 36, "resolut": [36, 81, 84, 88], "demo_epsilon": 36, "999999": 36, "my_dp_ep": 36, "infinit": 36, "set_st": 36, "demo_hug": 36, "f14": 36, "counter": [36, 53], "danger": 36, "4028235e": [36, 37], "797693134862316e": 36, "308": [36, 42, 80, 101], "1754944e": [36, 37], "225073858507201e": 36, "216": [36, 66, 67, 72], "1296": 36, "7776": 36, "46656": 36, "279936": 36, "1679616": 36, "10077696": 36, "60466176": 36, "362797056": 36, "2118184960": 36, "2147483648": [36, 42], "2176782336": 36, "175792128": 36, "13060694016": 36, "1054752768": 36, "78364164096": 36, "demo_maxexpon": 36, "0_real32": 36, "0_real128": 36, "1021": [36, 74], "16381": 36, "16384": 36, "demo_minexpon": 36, "unus": [36, 41, 72, 85, 89], "demo_precis": 36, "demo_radix": 36, "demo_rang": 36, "demo_tini": 36, "17549435e": 36, "40282347e": 36, "2250738585072014e": 36, "7976931348623157e": [36, 42], "modulu": 37, "axi": 37, "demo_ab": 37, "rr": 37, "78_dp": 37, "frmt": 37, "a15": 37, "t51": 37, "frmtc": 37, "bewar": 37, "78000000000000": 37, "3402823e": 37, "iaint": 37, "demo_aint": 37, "x8": [37, 42], "chop": 37, "999": [37, 40], "1111": 37, "9999": 37, "3210_dp": 37, "round": [37, 42, 84], "unlik": [37, 42], "demo_anint": 37, "783": 37, "1234567890e0": 37, "1234567890d0": 37, "why": 37, "cusp": 37, "2345679e": 37, "1234567936": 37, "demo_ceil": 37, "conjug": [37, 42], "demo_conjg": 37, "dz": 37, "2345678901234567_real64": 37, "g8": 37, "23456789012346": [37, 42], "subtrahend": 37, "minuend": 37, "whichev": [37, 42], "demo_dim": 37, "321_real64": 37, "111_real64": 37, "21000000000000": 37, "multiplicand": 37, "demo_dprod": 37, "xy": 37, "9599993133545": 37, "96000": 37, "9999995231628": 37, "0000009536743": 37, "5399999713898": 37, "8400004005432": 37, "3000004291534": 37, "demo_floor": 37, "deviat": 37, "29000": 37, "59000": 37, "a3": 37, "a4": 37, "longest": 37, "demo_max": 37, "2200": 37, "22222": 37, "bb": 37, "9999997e": 37, "demo_min": 37, "quotient": 37, "polynomi": [37, 70, 72, 74, 76, 77], "dividend": 37, "divisor": 37, "octob": [37, 60, 61, 66, 81, 83], "en": 37, "formula": [37, 53], "cancel": [37, 61, 89], "demo_mod": 37, "900001": 37, "299999": 37, "5000000": [37, 42], "demo_modulo": 37, "500000": [37, 42], "demo_sign": 37, "demo_cshift": [37, 41], "5i3": [37, 41], "4i3": [37, 41], "vector_a": [37, 41], "vector_b": [37, 41], "promot": [37, 41, 81], "_logic": [37, 41], "demo_dot_prod": [37, 41], "boundari": [37, 41], "neccessari": [37, 41], "backfil": [37, 41, 79, 84, 85], "demo_eoshift": [37, 41], "matrix_a": [37, 41], "matrix_b": [37, 41], "type1": [37, 41], "type2": [37, 41], "jth": [37, 41], "value_of_el": [37, 41], "row_i_of_matrix_a": [37, 41], "column_j_of_matrix_b": [37, 41], "demo_matmul": [37, 41], "v2": [37, 41], "print_vector_int": [37, 41], "220": [37, 41, 66, 67, 72, 74, 101], "490": [37, 41, 77], "280": [37, 41, 68, 69], "640": [37, 41], "3300": [37, 41], "winograd": [37, 41], "variant": [37, 41, 81, 88], "strassen": [37, 41], "gemmw": [37, 41], "bla": [37, 41, 91, 94, 97, 99], "dougla": [37, 41], "heroux": [37, 41], "slishman": [37, 41], "smith": [37, 41, 49], "journal": [37, 41, 83, 87], "physic": [37, 41, 75, 90, 99], "vol": [37, 41], "januari": [37, 41, 69, 85], "1994": [37, 41], "instabl": [37, 41], "neqv": [37, 41, 53], "demo_par": [37, 41], "ptr": [37, 39, 41, 82], "mold": [37, 39, 41, 42, 82, 86], "demo_nul": [37, 41], "showit": [37, 41], "real_ptr": [37, 41], "integer_ptr": [37, 41], "imag": [38, 39, 40, 46, 57, 90], "source_imag": 38, "demo_co_broadcast": 38, "cobound": 38, "result_imag": 38, "demo_co_max": 38, "18508": 38, "minim": [38, 79, 83, 92, 94], "demo_co_min": 38, "pairwis": 38, "nonallocat": [38, 41], "commut": [38, 41], "demo_co_reduc": 38, "myprod": 38, "fulfil": [38, 42, 87], "criteria": [38, 42, 45], "demo_co_sum": 38, "event_wait": 38, "event_typ": 38, "demo_event_queri": 38, "event_value_has_been_set": 38, "cnt": 38, "elseif": [38, 39], "cosubscript": 38, "corank": [38, 89], "demo": 38, "team_numb": 38, "team_typ": 38, "mutual": 38, "ancestor": [38, 39], "demo_num_imag": 38, "broadcast": 38, "5678": 38, "demo_this_imag": 38, "atomic_int_kind": 38, "stat_stopped_imag": [38, 39], "stat_failed_imag": [38, 39], "demo_atomic_and": 38, "10100011101": 38, "fetch": [38, 61, 65, 101], "demo_atomic_fetch_and": 38, "demo_atomic_fetch_or": 38, "demo_atomic_fetch_xor": 38, "demo_atomic_or": 38, "demo_atomic_xor": 38, "demo_atomic_add": 38, "swap": 38, "addition": [38, 47], "atomic_logical_kind": 38, "demo_atomic_ca": 38, "prev": 38, "atomic_kind_kind": 38, "demo_atomic_defin": 38, "demo_atomic_fetch_add": 38, "demo_atomic_ref": 38, "demo_associ": 39, "tgt": 39, "mole": 39, "guard": [39, 86], "demo_extends_type_of": 39, "m_demo_extends_type_of": 39, "something_els": 39, "grandpa": 39, "dad": 39, "alien": 39, "am": [39, 63, 64, 65, 66, 67], "descend": 39, "propag": [39, 63, 64, 65, 76, 97, 99], "father": 39, "grandfath": 39, "paradox": 39, "whatsoev": 39, "t1": 39, "t2": 39, "iostat_end": 39, "demo_iostat": 39, "goodby": 39, "iostat_eor": 39, "demo_is_iostat_eor": 39, "inum": 39, "lun": 39, "destin": 39, "explanatori": [39, 40, 88], "grid": [39, 97, 99], "demo_move_alloc": 39, "tempgrid": 39, "failur": [39, 74, 79, 84], "99f8": 39, "500": [39, 77, 79, 80, 81, 82, 84], "subprogram": [39, 67, 69, 80, 86, 87, 89], "demo_pres": 39, "1492": 39, "x_local": 39, "xlocal": 39, "NO": [39, 42, 51, 88], "tattl": 39, "not_opt": 39, "arg": [39, 40, 72, 79, 80, 81, 82, 84, 89, 96], "2226064": 39, "demo_same_type_a": 39, "m_ether": 39, "mom": 39, "demo_command_argument_count": 40, "verb": 40, "test_command_argument_count": 40, "herein": 40, "glob": 40, "rare": 40, "demo_get_command": 40, "command_line_length": 40, "command_lin": 40, "test_get_command": 40, "bash": [40, 46, 79, 85], "IFS": 40, "unquot": 40, "convention": 40, "demo_get_command_argu": 40, "prognam": 40, "argument_length": 40, "001": 40, "00001": 40, "00004": 40, "003": 40, "00022": 40, "00008": 40, "elaps": 40, "imprecis": 40, "meaningless": 40, "inadequ": 40, "meaning": [40, 53], "demo_cpu_tim": 40, "startd": 40, "finishd": 40, "clock": [40, 91], "millisecond": 40, "guarante": [40, 42, 53], "f6": 40, "4000030e": 40, "2000000000000265e": 40, "zone": 40, "unavail": 40, "8601": 40, "utc": 40, "establish": [40, 82], "bureau": 40, "weight": [40, 98], "bipm": 40, "poid": 40, "et": [40, 87, 99], "mesur": 40, "rotat": 40, "ier": 40, "ccyymmdd": 40, "ccyi": 40, "gregorian": 40, "calendar": [40, 60, 61, 62, 63, 64, 65, 66, 91], "mm": [40, 99], "month": [40, 42, 50, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91], "dai": [40, 42, 48, 50, 58, 60, 61, 62, 63, 64, 65, 66, 70, 83, 91], "hhmmss": 40, "sss": 40, "hh": 40, "hour": 40, "minut": [40, 57, 81], "ss": 40, "hhmm": 40, "eight": [40, 42], "centuri": 40, "demo_date_and_tim": 40, "i5": [40, 42], "20201222": 40, "165738": 40, "779": 40, "0500": 40, "m_time": [40, 91], "dongli": 40, "wavebitscientif": 40, "count_rat": 40, "count_max": [40, 82], "durat": [40, 91], "interv": 40, "boot": 40, "spent": [40, 77], "lieu": 40, "profil": [40, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "rate": 40, "obvious": 40, "reach": [40, 69, 70, 72], "20648193": 40, "3600": 40, "753748": 40, "1573039": 40, "demo_system_clock": 40, "count64": 40, "count_rate64": 40, "count_max64": 40, "start64": 40, "finish64": 40, "count32": 40, "count_rate32": 40, "count_max32": 40, "start32": 40, "finish32": 40, "time_read": 40, "64bit": 40, "32bit": 40, "0_wp": 40, "9223372036854775807": [40, 42], "1000000000": 40, "1105422387865806": 40, "1105422387": 40, "66344288183024": 40, "266": [40, 68], "1341038460000004": 40, "wait": [40, 63, 67, 80, 88], "exitstat": 40, "cmdstat": 40, "cmdmsg": 40, "cmd": [40, 87, 88, 89], "asynchron": [40, 41, 50, 89], "synchron": 40, "signal": [40, 80, 85, 88], "posix": [40, 46, 80, 90, 94, 95, 96, 97, 98, 101], "sigint": 40, "sigquit": 40, "sigchld": 40, "child": [40, 50, 86], "alongsid": 40, "demo_exec": 40, "external_prog": 40, "reindex_fil": 40, "reindex": 40, "trim_nam": 40, "demo_getenv": 40, "homedir": 40, "get_env": 40, "howbig": 40, "strang": 40, "boooh": 40, "urbanj": 40, "nonopt": 41, "condition": [41, 42], "iter": [41, 53], "cumul": 41, "my_mult": 41, "demo_reduc": 41, "my_sum": 41, "1415": 42, "876": 42, "utf": [42, 88], "unicod": [42, 89], "fundament": [42, 99], "enforc": [42, 68, 69, 74, 80, 81, 88, 89], "demo_aimag": 42, "z4": 42, "z8": 42, "e0": 42, "e0_real64": 42, "23456789": 42, "87654321": 42, "z1": 42, "upward": 42, "mandat": 42, "sngl": 42, "loos": 42, "desir": [42, 55, 83, 101], "2345678901234567d0": 42, "2345678901234567e0_dp": 42, "imped": 42, "fft": [42, 79, 83, 88, 89, 90, 94, 97, 99], "namelist": [42, 57, 81, 85, 86, 87, 88, 92, 96], "imaginary_part": 42, "parenthes": [42, 49, 50, 54, 79, 80, 81, 83, 89], "_real": 42, "zthree": 42, "1111111111111111d0": 42, "2222222222222222d0": 42, "lh": 42, "234568": 42, "23456788063049": 42, "11111111111111": 42, "22222222222222": 42, "demo_int": 42, "777777777777777777777": 42, "7fffffffffffffff": 42, "14748467e": 42, "2147484672": 42, "demo_nint": 42, "x4": 42, "234e0": 42, "721_dp": 42, "icheck": 42, "67e15": 42, "700000": 42, "200000": 42, "4000000": 42, "9999999e": 42, "234566949990144e": 42, "019": 42, "9223372036854775808": 42, "demo_r": 42, "zr": 42, "xd": 42, "zd": 42, "0e0_dp": 42, "converst": 42, "demo_dbl": 42, "1800000667572021": 42, "2999999523162842": 42, "entireti": 42, "arbitrarili": 42, "sensibl": 42, "demo_transf": 42, "2143289344": 42, "i686": 42, "abcdefghij": 42, "1111111110000000000000000000000": 42, "krahn": 42, "reinterpret": 42, "confer": [42, 44, 58, 80, 82], "onto": 42, "decent": 42, "problemat": 42, "oblivi": 42, "sparingli": 42, "logical_kind": 42, "alia": 42, "boolean1": 42, "boolean2": 42, "boolean4": 42, "boolean8": 42, "boolean16": 42, "demo_kind": 42, "dc": 42, "dl": 42, "finit": [42, 90, 95, 97, 99], "mode": [42, 46, 63, 64, 65, 70, 77, 80, 86, 88, 96], "demo_out_of_rang": 42, "j8": 42, "incorrectli": 42, "130": 42, "129": 42, "iso_10646": 42, "uc": 42, "demo_selected_char_kind": 42, "ucs4": 42, "utf8": 42, "hello_world": 42, "Not": [42, 64], "ascii_": 42, "ucs4_": 42, "ni": 42, "hao": 42, "4f60": 42, "597d": 42, "create_date_str": 42, "japanes": 42, "stamp": 42, "nen": 42, "5e74": 42, "gatsu": 42, "6708": 42, "nichi": 42, "65e5": 42, "\u4f60\u597d": 42, "2022\u5e7410\u670815\u65e5": 42, "accommod": [42, 87], "criterion": 42, "demo_selected_int_kind": 42, "k5": 42, "k15": 42, "i15": 42, "inequ": [42, 53, 97], "10_k5": 42, "10_k15": 42, "demo_selected_real_kind": 42, "p6": 42, "p10r100": 42, "r400": 42, "reader": [43, 45, 50], "plug": [44, 47], "ins": [44, 47], "advertis": [44, 83], "themselv": 44, "absofttool": 44, "prospect": [44, 71], "refactor": [44, 64, 65, 67, 68, 70, 74, 76, 79, 80, 84, 85, 89, 98], "geani": [44, 48], "plato": 44, "simplyfortran": 44, "bundl": 44, "author": [45, 69, 70, 82, 83, 90], "stavro": 45, "mesko": 45, "laurenc": [45, 61, 75, 83], "kedward": [45, 61, 75, 83, 87], "arjen": [45, 75, 83], "feb": 45, "perhap": 45, "id": [45, 47, 48], "oss": 45, "greatli": 45, "aforement": 45, "controversi": 45, "con": 45, "gfortranbinari": 46, "quick": [46, 48, 77, 83, 99], "tdm": 46, "mingw": [46, 69, 70, 72, 79], "w64": [46, 72], "straightforward": 46, "wizard": 46, "emul": 46, "msys2": [46, 68], "subsystem": [46, 47], "wsl": [46, 47, 80, 81], "layer": [46, 93, 94], "coreutil": 46, "cmake": [46, 47, 63, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "grep": 46, "sed": 46, "ssh": 46, "sudo": 46, "apt": [46, 69], "ppa": 46, "toolchain": [46, 72, 74], "yum": 46, "dnf": 46, "pacman": 46, "fxcoudert": 46, "brew": 46, "gcc10": 46, "pkg_add": 46, "egfortran": 46, "serial": [46, 68, 82, 85, 89, 95], "mpi": [46, 80, 83, 84, 90, 91, 94, 95, 96, 97, 99], "cafrun": [46, 101], "number_of_imag": 46, "executable_nam": 46, "emphas": 46, "notepad": 47, "auto": [47, 57, 65, 66, 98], "brace": 47, "emac": 47, "vim": 47, "neovim": 47, "fortranwiki": 47, "ergonom": 47, "uninterrupt": 47, "ui": 47, "mention": [47, 71], "varieti": [47, 83], "fall": [47, 89, 92], "heavyweight": 47, "impact": 47, "vscode": [47, 89, 101], "slower": 47, "lightweight": [47, 98], "steep": 47, "notori": 47, "newcom": [47, 83, 86], "keyboard": 47, "icon": 47, "lint": 47, "gitlen": 47, "tamasf": 47, "bar": [47, 52, 83], "hansec": 47, "facebook": 47, "dparkin": 47, "akonwi": 47, "conclud": [48, 72], "fermi": 48, "although": 48, "promis": 48, "neutral": [48, 73, 99], "amaz": 48, "arguabl": 48, "survei": 48, "trial": 48, "price": 48, "afford": 48, "student": [48, 69, 70, 71, 72, 76, 77, 78, 79, 83, 86], "hobbyist": 48, "hesit": [48, 66, 67, 68, 69, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "contact": [48, 72, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "compani": [48, 57], "discount": 48, "multidimension": [49, 97], "1d": 49, "array1": 49, "array2": 49, "array3": 49, "array4": 49, "array5": 49, "array_slic": 49, "first_nam": [49, 50], "last_nam": [49, 50], "full_nam": 49, "allocatable_str": 49, "excess": [49, 80], "string_arrai": 49, "dbname": 49, "ben": 49, "motiv": [49, 83], "akei": 49, "aval": 49, "encapsul": 50, "struct": [50, 85, 88, 89], "t_pair": 50, "parameter": [50, 74], "vice": [50, 85], "versa": [50, 85], "presuppos": 50, "f_to_c": 50, "c_int": 50, "f_type": 50, "c_struct": 50, "m_matrix": 50, "t_matrix": 50, "col": 50, "test_matrix": 50, "throw": 50, "oop": 50, "m_employe": 50, "t_date": 50, "t_address": 50, "t_person": 50, "t_employe": 50, "citi": 50, "road_nam": 50, "house_numb": 50, "e_mail": 50, "hired_d": 50, "monthly_salari": 50, "test_employe": 50, "employe": 50, "bigben": 50, "showcas": [50, 65], "attr": 50, "spec": [50, 63, 78, 80, 84], "init": [50, 67, 79, 87, 88], "volatil": 50, "t_exampl": 50, "contrari": 50, "3rd": [50, 74, 101], "recogn": [50, 79], "upcom": [50, 63, 64, 65, 66, 67, 69, 72], "ll": [50, 51, 60, 61, 83, 86, 87], "delv": 50, "m_shape": 50, "t_squar": 50, "sq": 50, "chose": 50, "ubiquit": 51, "homebrew": 51, "macport": 51, "copyright": [51, 79], "warranti": 51, "merchant": 51, "favourit": 51, "1990": 51, "congratul": [51, 67, 76], "ve": [51, 60, 61, 63, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81], "flow": [52, 84, 99], "bottom": 52, "wherebi": [53, 54, 101], "operand": [53, 80, 81, 87, 89], "strictli": 53, "acut": 53, "obtus": 53, "reflex": 53, "met": 53, "prematur": 53, "innermost": 53, "recur": 53, "grain": 53, "outer_loop": 53, "inner_loop": 53, "outer": [53, 77], "simd": [53, 66, 72, 80, 81], "14159265": 53, "result_sin": 53, "print_matrix": 54, "signifi": 54, "unintent": 54, "call_sub": 54, "mat": 54, "vector_norm": 54, "vec": 54, "run_fcn": 54, "my_mod": 54, "public_var": 54, "private_var": 54, "use_mod": 54, "printmat": 54, "variable_typ": 55, "variable_nam": 55, "frequenc": 55, "isokai": 55, "capitalis": 55, "reassign": 55, "1415927": 55, "surround": 55, "watch": [55, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "initialis": [55, 72], "earlier": 55, "read_valu": 55, "ag": 55, "cylind": 55, "float32": 55, "float64": 55, "0_sp": 55, "la": [57, 60, 61], "vega": [57, 60, 61], "nv": 57, "vote": [57, 70, 72, 77], "jon": 57, "steidel": 57, "bill": [57, 61], "peter": [57, 61], "klausler": [57, 61], "gari": [57, 72], "klimowicz": [57, 72], "daniel": 57, "chen": 57, "srinath": 57, "vadlamani": 57, "ncar": [57, 72], "dan": 57, "nagl": 57, "magn": 57, "haveraaen": 57, "nasa": [57, 99], "clune": 57, "jpl": 57, "van": [57, 61], "sneider": 57, "lanl": [57, 68, 79, 80, 81, 82, 84, 85, 86, 87], "zach": 57, "jibben": 57, "ornl": 57, "reuben": 57, "budiardja": 57, "lbnl": 57, "brian": [57, 67], "friesen": [57, 67], "sandia": 57, "damian": [57, 83], "lionel": [57, 58, 60], "steven": 57, "malcolm": 57, "vipul": 57, "parekh": 57, "corbett": 57, "bob": 57, "richard": 57, "bleikamp": 57, "wg23": 57, "stephen": 57, "michel": 57, "convenor": 57, "erhard": 57, "ploedered": 57, "brad": [57, 61, 75, 83], "richardson": [57, 61, 75, 83], "doc": [57, 61, 63, 66, 67, 84, 85, 86, 87, 88, 89], "157": [57, 65, 77, 78], "158": [57, 66], "typeof": 57, "classof": 57, "namespac": [57, 79, 89], "102r1": 57, "104r1": 57, "bfloat16": 57, "146": [57, 63, 64, 66], "unanim": 57, "156": [57, 66, 67], "withdrawn": 57, "conflict": [57, 69, 74, 88, 89], "160": [57, 65, 66, 67, 68], "framework": [57, 83, 85, 94, 98, 101], "disagr": 57, "straw": 57, "undecid": 57, "f18": [57, 68, 72, 74, 79, 85], "015": 57, "modif": [57, 76, 77, 88], "144r1": 57, "fortran_propos": [57, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "155": [57, 65, 66, 81], "juli": [58, 60, 61, 63, 78], "z\u00fcrich": 58, "switzerland": [58, 60, 61], "happi": [58, 68, 75, 79, 84], "knowledg": 58, "uzh_en": 58, "zurich": [58, 60, 61, 83], "doctorfortran": 58, "keynot": [58, 83], "speaker": [58, 60, 61, 83], "lnyozxhrzi": 58, "mdash": 58, "tizianomuel": 58, "bring": [58, 83, 89, 101], "half": 58, "lectur": 58, "session": [58, 83], "conven": 58, "registr": [58, 60, 61, 72, 78, 79], "june": [58, 60, 62, 77], "deadlin": [58, 60], "virtual": [58, 60, 61, 66, 70, 77, 78, 79, 80, 81], "attende": [58, 60, 61], "travel": 58, "ondrejcertik": 59, "realmilancurc": 59, "spoke": 59, "yesterdai": 59, "episod": [59, 60, 68], "thank": [59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "melissa": [59, 61], "mendon\u00e7a": [59, 61], "melissawm": [59, 61], "madicken": 59, "munk": 59, "munkium": 59, "openteam": [59, 60], "quansight": [59, 60], "monthli": [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "came": 60, "hope": [60, 83], "internet": [60, 101], "tradition": 60, "hasn": [60, 64], "172": 60, "cov": 60, "stdlib_experimental_stat": [60, 61], "covari": 60, "168": [60, 79], "173": [60, 68], "wip": [60, 61, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "diag": [60, 61], "ey": [60, 61, 78, 79], "trace": [60, 61], "backend": [60, 63, 64, 65, 67, 68, 70, 76, 77, 82, 84, 85, 86, 87, 88, 89, 101], "suport": 60, "decentr": [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "healthi": [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "eas": [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "2024": 60, "he": [60, 66], "overcom": 60, "webinar": [60, 72, 74], "talk": [60, 61, 62, 63, 66, 80, 83], "video": [60, 63, 65, 69, 71, 79, 80, 83], "fortrancon": [60, 61, 62, 63, 65, 77, 78, 79, 80, 82], "joint": [60, 61, 77], "nevada": [60, 61], "februari": [60, 61, 70, 72, 86], "corpor": [60, 77], "santa": 60, "clara": 60, "hillsboro": 60, "pozent": 60, "pa": 60, "technic": [60, 65, 83], "american": 60, "cybersystem": 60, "binghamton": 60, "ada": 60, "radar": 60, "bravotech": 60, "dalla": 60, "tx": 60, "siemen": 60, "milford": 60, "oh": 60, "cae": 60, "topologi": 60, "got": [61, 79, 85], "reorgan": [61, 72], "item": [61, 72, 84, 88], "launch": [61, 101], "board": [61, 68], "lurk": 61, "api": [61, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 94, 95, 101], "automaticali": 61, "ford": [61, 72, 82, 98], "licenc": 61, "191": [61, 69, 70], "pearson": 61, "correl": 61, "189": [61, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "spars": [61, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 91, 94, 97, 99], "183": 61, "deploy": 61, "folder": 61, "turnout": 61, "astonish": 61, "submiss": 61, "jeremi": 61, "vandenpla": [61, 83], "slate": 61, "everybodi": [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "izaak": 61, "zaak": 61, "beekman": 61, "martin": 61, "diehl": 61, "snyder": [61, 80, 84], "vansnyd": 61, "fortranfan": 61, "neil": 61, "carlson": 61, "nncarlson": 61, "ashwin": 61, "vishnu": 61, "ashwinvi": 61, "william": 61, "lima": 61, "ghwilliam": 61, "chri": 61, "macmackin": 61, "cmacmackin": 61, "pedro": 61, "mobiu": 61, "eng": 61, "salvator": 61, "filippon": 61, "sfilippon": 61, "shamantcl": 61, "amit": 61, "kumar": 61, "weber": 61, "jacob": 61, "rohit": [61, 70, 72, 75, 76, 78, 79, 83], "goswami": [61, 70, 72, 75, 76, 78, 79, 83], "haozek": 61, "amir": 61, "longb": 61, "acknowledg": 62, "poll": 62, "fanci": [62, 70, 72], "209": [62, 66, 67], "simp": 62, "simps_weight": 62, "stdlib_experimental_quadratur": 62, "205": [62, 70], "208": [62, 66, 70], "210": 62, "207": [62, 70, 72], "211": 62, "began": [62, 89], "schedul": [62, 63, 67, 69, 70, 79, 83], "dedic": [63, 64, 65, 83], "223": [63, 72], "clariti": 63, "experiment": 63, "stabl": 63, "224": [63, 64, 65, 67], "221": [63, 64, 65, 66, 67, 72], "bitset": [63, 64, 65, 66, 67, 74], "201": [63, 64, 65, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 101], "registri": [63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "frontend": [63, 72, 80, 85, 86, 89], "semant": [63, 64, 65, 66, 67, 68, 69, 72, 74, 76, 79, 80, 81, 84, 85, 86, 88, 89], "131": 63, "132": 63, "139": 63, "140": 63, "142": 63, "145": [63, 66], "147": [63, 66], "148": 63, "151": 63, "haskel": [63, 65, 67, 68, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "bootstrap": [63, 66, 68, 81, 101], "begun": [63, 80], "biweekli": [63, 64, 65, 66, 67, 68], "wednesdai": [63, 64, 65, 66, 67, 77, 81], "pacif": [63, 64, 65, 66, 67], "agenda": [63, 64, 65, 66, 67, 81, 86], "outstand": [63, 81], "enhanc": [63, 89], "fcv": [63, 64, 65, 66, 67], "f77": [63, 64, 65, 66, 67, 74], "cominu": 63, "fir": [63, 64, 65, 66, 67, 72, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "driver": [63, 64, 65, 66, 67, 68, 69, 72, 74, 79, 80, 81, 85, 86, 87, 88, 89], "throwawai": 63, "unpars": 63, "valentin": [63, 64, 65, 66], "clement": [63, 64, 65, 66], "kokko": 63, "parallel_for": 63, "lfortranorg": [63, 64, 65, 66, 83], "1280764915242811393": 63, "progress": [63, 65, 66, 67, 68, 69, 70, 72, 74, 75, 76, 77, 78, 83, 88, 89, 97], "notabl": [63, 83], "163": [63, 65], "410": 63, "402": [63, 72], "asr": [63, 65, 74, 76, 77, 78, 79, 80, 81, 84, 85, 86, 88, 89], "basi": 63, "doctest": 63, "held": [63, 66, 70, 77, 78, 79, 80, 81, 83], "133": [64, 101], "august": 64, "227": 64, "facil": [64, 65], "candid": [64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "bugfix": [64, 88], "pr94361": 64, "coupl": [64, 99], "week": 64, "monorepo": [64, 65, 67], "ast": [64, 65, 66, 74, 76, 78, 79, 81, 83, 88, 89], "stage": [64, 72, 80], "subcommand": [64, 65, 68, 69, 70, 72, 84, 85], "kernel": 64, "jupyt": [64, 65, 66], "stacktrac": [64, 70, 72, 85], "unhandl": 64, "excet": 64, "segfault": 64, "fourth": [64, 65], "136": [65, 89], "stdlib_ascii": [65, 70], "238": 65, "stdlib_stat": [65, 84], "228": 65, "stdlib_logg": [65, 67, 68], "logger": [65, 66, 67, 95], "logger_typ": 65, "239": [65, 66, 67], "stdlib_bitset": [65, 66, 67], "235": 65, "186": [65, 68], "185": 65, "ci": [65, 67, 68, 69, 78, 79, 80, 85, 88, 89], "discoveri": [65, 66, 83], "177": 65, "175": 65, "174": [65, 68, 69], "171": [65, 68], "162": 65, "193": [65, 66, 70], "190": [65, 66, 68, 69], "658": [65, 70], "flexi": [65, 99], "737": 65, "756": 65, "ic": [65, 67, 68, 88, 89], "interf": 65, "new_symbol_and_link": 65, "888": 65, "exec": 65, "916": 65, "921": 65, "fledg": [65, 66, 80], "mondai": [65, 70, 77, 81], "michael": [65, 66], "kruse": [65, 66], "msvc": [65, 66, 79], "imlement": 65, "surpass": 65, "ago": 65, "notebook": [65, 66], "624": [65, 86], "632": [65, 87], "617": [65, 85], "prompt": 65, "repl": [65, 70], "arrow": 65, "603": [65, 84], "152": 66, "secur": 66, "vulner": 66, "atomsk": [66, 95], "ddpcm": [66, 97], "dft": [66, 99], "d4": [66, 99], "elpa": [66, 94, 97], "elsi": [66, 94], "fortjson": [66, 95], "fypp": [66, 78, 79, 80, 82, 94, 98], "libmbd": [66, 99], "libnegf": [66, 97], "mpifx": [66, 94], "ntpoli": [66, 94, 97], "nwchem": [66, 99], "openmolca": [66, 99], "poisfft": [66, 97], "qmd": [66, 97], "scalapackfx": [66, 94], "tapenad": [66, 97, 98], "wannier90": [66, 99], "xtb": [66, 99], "154": 66, "240": [66, 67], "stdlib_stats_distribut": [66, 67, 68, 69, 70, 72, 74, 76], "243": [66, 67], "proposit": [66, 67], "241": [66, 67, 68, 69], "202x": [66, 67, 70, 72, 77, 81], "213": 66, "list_fil": 66, "mkdir": [66, 82, 94], "fpm_filesystem": 66, "206": [66, 70], "204": 66, "203": 66, "beta": [66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "runner": [66, 67, 68, 101], "bashism": 66, "202": 66, "660": [66, 70, 89], "878": 66, "debuginfo": [66, 67], "dispflagoptim": 66, "910": 66, "f90_correct": 66, "922": [66, 72], "find_def_in_most_recent_scop": 66, "927": 66, "openpow": 66, "930": 66, "931": 66, "flang2": [66, 72], "fault": 66, "421": 66, "932": [66, 69], "flang1": 66, "unempti": [66, 69], "938": 66, "crash": [66, 68, 81, 82, 86, 87, 88, 89], "ivl": 66, "dinit": 66, "cpp": [66, 74, 81, 85, 88, 89, 90, 94, 97], "pat": [66, 67], "mccormick": [66, 67], "rfc": [66, 67], "master": [66, 67, 74, 76, 84, 88, 89, 99], "expedit": [66, 67], "gave": 66, "jupytercon": 66, "645": [66, 85], "captur": [66, 72], "642": [66, 84, 87], "meson": [67, 83, 101], "169": 67, "psbla": [67, 91, 97], "245": 67, "252": 67, "250": 67, "254": 67, "259": [67, 68, 69, 76], "246": [67, 74, 76, 77, 78, 79, 80], "233": 67, "237": 67, "226": [67, 72, 86], "229": [67, 72], "236": [67, 74], "247": 67, "230": [67, 68, 69, 70], "261": [67, 68, 69, 70, 76], "232": 67, "248": [67, 68], "251": 67, "257": [67, 68], "883": 67, "933": 67, "939": 67, "941": 67, "gdb": 67, "942": 67, "unrol": [67, 88], "943": 67, "945": 67, "libpgmath": 67, "pgstdinit": 67, "946": 67, "check_memb": 67, "pd_is_contigu": 67, "951": [67, 68], "downstream": 67, "pipelin": [67, 86, 89], "mirror": 67, "interrupt": 67, "ecp": 67, "duti": 67, "johann": 67, "doerfert": 67, "slack": 67, "logist": 67, "nichol": 67, "romero": 67, "pipermail": 67, "novemb": [67, 82], "146873": 67, "andzrej": 67, "warzynski": 67, "000588": 67, "cfe": 67, "clang": [67, 74, 80, 88], "067263": 67, "shutdown": [67, 88], "checker": 67, "copyin": [67, 86], "claus": [67, 68, 69, 72, 74, 79, 80, 81, 82, 86, 88, 89], "lawrenc": [67, 83], "berkelei": [67, 83], "laboratori": [67, 99], "chair": 67, "pl22": 67, "6th": 67, "188": 68, "179": [68, 101], "187": [68, 69], "log_debug": 68, "263": 68, "267": 68, "275": [68, 77], "282": 68, "283": 68, "269": [68, 69, 76], "271": [68, 69, 70], "272": [68, 69, 70, 72, 74, 76, 77, 78, 79, 80], "276": [68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85], "278": [68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "284": [68, 69, 78], "subproject": [68, 69, 76, 80], "usabl": [68, 69, 101], "279": [68, 69], "285": [68, 69], "212": [68, 69], "234": [68, 69], "258": [68, 69], "262": [68, 69], "268": [68, 69], "277": [68, 69, 77, 78], "alpha": [68, 70, 72, 74, 76, 77, 79, 82], "ubuntu": [68, 76], "274": [68, 77, 78], "281": [68, 78], "286": [68, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "289": [68, 78], "291": [68, 69, 78], "292": 68, "293": [68, 69, 78], "new_packag": 68, "294": [68, 69, 78], "303": [68, 69, 79], "304": [68, 69, 70], "collis": [68, 72], "315": 68, "ffast": 68, "322": 68, "316": [68, 69, 70], "reflect": [68, 69, 70, 85], "decemb": [68, 84], "alexi": [68, 79, 80, 81, 82, 84, 85, 86, 87], "perri": [68, 79, 80, 81, 82, 84, 85, 86, 87], "holbi": [68, 79, 80, 81, 82, 84, 85, 86, 87], "aperri": [68, 79, 80, 81, 82, 84, 85, 86, 87], "gov": [68, 79, 80, 81, 82, 84, 85, 86, 87], "invit": [68, 83], "sent": [68, 69, 72, 74], "email": [68, 69, 72, 74, 85, 86], "22nd": 68, "foral": [68, 76, 80, 87, 88, 89], "tidi": 68, "flush": [68, 77, 86, 88], "fold": [68, 74, 80, 81, 82, 84, 85, 87, 88, 89, 96], "48437": 68, "48308": 68, "implicit_non": [68, 78, 79], "sizeof": 68, "ompclaus": [68, 69], "7th": 68, "adsp": 68, "podcast": 68, "301": 69, "pkg": 69, "config": [69, 80, 85, 86, 95], "290": [69, 78], "fortran_stdlib": 69, "288": [69, 78], "342": 69, "337": 69, "hyphen": [69, 83], "335": [69, 80], "regress": [69, 72, 74, 81, 88], "334": [69, 80], "testsuit": 69, "345": [69, 70, 81], "fpm_backend": 69, "957": 69, "prefetch": 69, "947": 69, "compilaton": 69, "948": 69, "949": 69, "sptr": 69, "971": 69, "dwarfdump_prolog": 69, "codegen": [69, 86, 87, 88], "940": 69, "prolog": 69, "977": 69, "751": 69, "956": 69, "filecheck": 69, "978": 69, "979": 69, "firstpriv": [69, 72, 79, 80, 86, 88], "lastpriv": [69, 72, 86, 88], "workshar": [69, 89], "task_reduct": 69, "macro": [69, 89], "checknobranch": 69, "labelenforc": 69, "disallow": 69, "8th": 69, "mentor": [69, 70, 71, 72, 75, 83, 86], "googl": [69, 70, 72, 73, 76, 77, 78, 79, 86, 87, 89], "summer": [69, 70, 72, 76, 77, 78, 79, 86, 87, 89], "flesh": 69, "elig": [69, 70, 72], "196": 70, "199": 70, "electron": [70, 90, 94, 97, 99], "atomist": [70, 99], "internation": [70, 72, 74, 76, 77, 78, 79, 80, 81, 82], "subtitl": [70, 72], "prng": 70, "310": 70, "324": [70, 80], "setuptool": 70, "311": [70, 72, 74, 76, 77], "320": [70, 72, 80], "313": [70, 72, 74, 76, 77, 80], "legendr": [70, 72, 74, 76, 77, 83], "gaussian": [70, 72, 74, 76, 77, 83, 89], "346": [70, 72], "349": [70, 72, 74, 84], "boostrap": 70, "372": [70, 74], "352": [70, 72], "hacki": [70, 72], "357": [70, 72], "plugin": [70, 72, 74, 76, 77, 79, 80, 82, 83, 86, 88, 89], "369": [70, 72, 79, 85, 86, 87, 88], "370": [70, 72], "excit": [70, 71, 75, 89], "numfocu": [70, 72, 75, 76, 83], "sponsor": 70, "donat": [70, 83], "gagandeep": [70, 72, 75, 76, 78, 79, 80, 83, 84, 85, 88, 89], "singh": [70, 72, 75, 76, 78, 79, 80, 83, 84, 85, 88, 89], "poerio": [70, 72, 76, 78, 79, 85], "654": [70, 85, 86], "657": [70, 89], "663": 70, "664": 70, "672": 70, "multilin": 70, "655": [70, 88, 89], "662": 70, "670": 70, "674": 70, "667": 70, "673": [70, 72], "648": [70, 85, 86], "666": [70, 89], "implicitcast": 70, "node": [70, 88, 89, 94], "665": [70, 86, 87, 88], "9th": 70, "223rd": [70, 72], "tuesdai": 70, "dicuss": [70, 72], "gsoc": [71, 72, 75, 77, 78, 79, 86, 87], "touch": [71, 72, 78, 79], "channel": [71, 82], "brainstorm": 71, "delaunayspars": [72, 97], "222": 72, "unclear": 72, "362": 72, "356": [72, 84], "to_low": 72, "to_upp": 72, "to_titl": [72, 74, 76], "stdlib_string_typ": [72, 74, 76, 83], "333": [72, 74, 76, 77, 80], "336": [72, 74, 80], "343": [72, 74], "chomp": [72, 74], "supplement": [72, 74], "353": [72, 74, 76, 77, 78, 79, 80, 81, 82, 84], "checkin": [72, 74, 76, 77, 78, 79, 80, 81, 82], "toler": [72, 74, 76, 77, 78, 79, 80, 81, 82], "355": [72, 74, 76, 84], "clip": [72, 74, 76], "359": [72, 74, 76, 85, 86, 88], "360": [72, 74], "summar": [72, 74, 76, 83], "363": [72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "367": [72, 74], "osx": [72, 74], "conda": [72, 83, 101], "forg": 72, "377": [72, 87], "378": 72, "386": [72, 74], "deprec": [72, 86], "debug_fortran": 72, "390": [72, 88], "407": [72, 76], "397": [72, 88, 89], "398": [72, 88], "intro": [72, 83], "404": 72, "409": 72, "414": [72, 76, 77], "412": 72, "omp_lib": [72, 88], "419": [72, 76, 77], "420": [72, 74, 76, 77, 78], "996": 72, "966": 72, "968": 72, "955": 72, "release_11x": 72, "974": 72, "hash": [72, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91], "didn": 72, "ccach": 72, "952": 72, "upgrad": [72, 80, 88], "disubrang": 72, "1002": 72, "995": 72, "985": 72, "asprintf": 72, "cp2k": [72, 99], "963": 72, "1007": 72, "1006": 72, "1004": 72, "nest": [72, 74, 76, 79], "710": 72, "561": 72, "424": [72, 77], "778": 72, "1012": 72, "release_90": 72, "fdefault": 72, "flarg": 72, "refin": [72, 84, 86, 89], "fdebug": [72, 74], "dump": [72, 74, 81, 87], "writer": 72, "xflang": 72, "op": [72, 81, 84, 86, 87, 88], "pft": [72, 87, 88], "zero_bit": [72, 82], "valuehasfirattribut": 72, "threadpriv": [72, 81, 85, 88], "copypriv": [72, 86], "gtest": 72, "erron": [72, 81, 89], "umbrella": 72, "gitlab": 72, "himanshu": 72, "pandei": 72, "thirumalai": [72, 75, 76, 78, 79, 80, 83, 85], "shaktivel": [72, 75, 76, 78, 79, 80, 83, 85], "scot": 72, "halverson": 72, "implent": 72, "modfil": [72, 85], "rapid": [72, 97], "zulip": 72, "chat": 72, "mailinglist": 72, "eastern": 72, "gklimowicz": 72, "excellerat": [72, 74], "wadud": [72, 74], "miah": [72, 74], "wadudmiah": [72, 74], "southampton": [72, 74], "grew": 73, "bing": 73, "yahoo": 73, "duckduckgo": 73, "ecosia": 73, "qwant": 73, "searchencrypt": 73, "novic": 73, "enthusiast": 73, "anybodi": [73, 83], "invent": 73, "1956": 73, "newslett": [73, 83], "244": 74, "dl_poly_4": [74, 99], "practis": [74, 76], "391": [74, 88], "388": 74, "384": [74, 87], "starts_with": 74, "ends_with": 74, "stdlib_sort": [74, 76, 77, 83], "468": [74, 78], "openbsd": [74, 78], "465": 74, "442": 74, "440": [74, 77], "438": 74, "437": [74, 77, 78, 79], "433": [74, 77], "431": 74, "differnt": 74, "429": 74, "wget": 74, "curl": [74, 94], "423": [74, 76], "444": [74, 76, 77, 78, 79], "cpath": [74, 76], "449": [74, 76, 77], "450": [74, 76], "451": [74, 76], "1025": 74, "atfork": 74, "handler": [74, 84, 98], "flangrti": 74, "lock": 74, "1026": 74, "895": 74, "1030": 74, "1034": 74, "prebuilt": 74, "openmp5": 74, "novari": 74, "nocontext": 74, "ompendloopdirect": 74, "werror": [74, 79], "mstandard": 74, "pedant": 74, "flang_fc1": 74, "nocpp": 74, "proven": [74, 87], "lit": 74, "fget": 74, "random_init": 74, "pdt": [74, 87, 88, 89], "ieee_selected_real_kind": 74, "ieee_arithmet": [74, 82, 86, 87], "spuriou": 74, "snap": [74, 80, 99], "proxi": [74, 99], "11th": 74, "slide": 74, "six": [75, 76, 83], "sebastian": [75, 78, 79, 80, 82, 83], "ehlert": [75, 78, 79, 80, 82, 83], "jakub": [75, 76, 83], "jel\u00ednek": [75, 76, 83], "chetan": [75, 76, 83], "karwa": [75, 76, 83], "beyond": [75, 101], "slot": 75, "weekli": 75, "grammar": [76, 80, 88], "maptran3d": [76, 97], "rpncalc": [76, 97], "gemini3d": [76, 99], "blocktran": [76, 92], "253": 76, "417": 76, "415": 76, "to_sent": 76, "418": 76, "intellig": [76, 77], "408": 76, "483": [76, 77, 79], "callback": 76, "czgdp1807": [76, 79], "dpoe": 76, "12th": 76, "studen": 76, "latt": [77, 99], "tight": [77, 99], "molecular": [77, 90, 99], "crest": [77, 99], "snac": [77, 99], "lua": [77, 78, 90, 94], "convert_fortran_cas": [77, 78, 98], "formatt": [77, 78, 79, 90, 98], "draft": [77, 78, 80, 83, 84, 85, 86, 88], "432": 77, "439": 77, "428": 77, "430": 77, "445": [77, 78, 79], "disp": [77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "format_str": [77, 78, 79], "441": [77, 78], "436": [77, 78], "replace_al": [77, 78], "426": [77, 78], "median": [77, 78], "coo": [77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "csr": [77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 101], "saw": 77, "v0": [77, 79, 82, 83], "504": [77, 80, 82, 84, 85, 86, 87, 88, 89], "501": [77, 79], "bump": [77, 78, 80, 82], "491": [77, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "497": 77, "495": 77, "489": 77, "redirect": 77, "484": 77, "505": 77, "quiet": [77, 86], "502": 77, "498": [77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "critic": [77, 79, 80, 81, 82, 88], "13th": 77, "202y": 77, "jeff": 77, "hammond": 77, "bryce": 77, "adelstein": 77, "lelbach": 77, "flatiron": 78, "institut": 78, "multipol": [78, 97], "arrayfir": [78, 94], "tone": 78, "296": 78, "297": 78, "insecur": 78, "454": 78, "stdlib_math": [78, 79, 80, 81, 82, 83, 84, 85, 86], "453": 78, "456": 78, "459": 78, "469": 78, "474": 78, "472": [78, 101], "481": [78, 79], "stdlib_linalg": [78, 79, 80, 81, 82, 84, 101], "480": 78, "seq": 78, "478": [78, 79], "477": 78, "475": [78, 79, 80], "473": [78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "470": [78, 79], "reviv": [78, 79], "467": [78, 79], "string_typ": [78, 79, 82, 83], "455": [78, 79, 80], "stdlib_hash": [78, 79, 80, 83], "waterhash": [78, 79, 80], "452": [78, 79, 80], "507": 78, "511": [78, 80], "516": 78, "517": [78, 80, 81, 82, 84, 85, 86, 87, 88, 89], "522": 78, "523": [78, 80], "525": [78, 80], "gitignor": [78, 79, 80, 85], "527": [78, 79], "521": [78, 79, 80], "506": [78, 79], "mr": 78, "andrew": [78, 79], "14th": 78, "njoi": [79, 96], "302": [79, 80], "qcxm": [79, 80, 99], "493": 79, "499": [79, 80, 81, 82, 84], "argd": [79, 80, 81, 82, 84], "argpi": [79, 80, 81, 82, 84], "494": [79, 80, 81, 82], "488": [79, 80, 81, 82, 84], "is_clos": [79, 80, 81, 82, 84], "stdlib_io": [79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "546": 79, "548": 79, "arm64": 79, "536": [79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "533": 79, "528": [79, 80], "539": [79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "zuo": 79, "zhihua": 79, "readili": 79, "qct": 79, "dcosqi": 79, "dcosqf": 79, "dcosqb": 79, "quarter": 79, "wave": [79, 99], "dzffti": 79, "dzfftf": 79, "dzfftb": 79, "zffti": 79, "zfftf": 79, "zfftb": 79, "rfft": 79, "dffti": 79, "dfftf": 79, "dfftb": 79, "readi": 79, "fftshift": 79, "ifftshift": 79, "dct": 79, "dcosti": 79, "dcost": 79, "drive": [79, 80, 84, 85, 86, 87, 88, 89], "proceed": 79, "nearing": [79, 80], "earnest": 79, "deem": 79, "enter_data": 79, "printer": [79, 81, 86], "omp": [79, 80, 81, 82, 88, 89], "collaps": [79, 80, 89], "lift": 79, "plural": 79, "std": [79, 81], "clock_t": 79, "carlo": [79, 80, 97, 99], "un": [79, 80], "z_final_report": 79, "c2a1aaa5239e792e499eaa8942987519": 79, "rgoswami": 79, "gsoc21": 79, "fin": 79, "reprot": 79, "impur": 79, "shortlog": 79, "15th": 79, "305": 80, "fortran2018": 80, "314": 80, "317": 80, "reword": 80, "328": [80, 101], "incompact3d": [80, 97], "fparser": [80, 98], "pflogger": [80, 95], "329": [80, 81], "509": 80, "503": 80, "cmake_install_moduledir": 80, "513": 80, "508": 80, "529": 80, "530": 80, "clearer": 80, "redund": 80, "543": [80, 81], "concat": [80, 81, 100], "gcd": 80, "538": 80, "537": [80, 83], "changelog": [80, 84], "520": [80, 81, 82, 84, 85, 86, 87, 88, 89], "spec_templ": [80, 81, 82, 84, 85, 86, 87, 88, 89], "514": [80, 81, 82, 84, 85, 86, 87, 88, 89], "stringlist": [80, 81, 82, 84, 85, 86, 87, 88, 89], "557": 80, "558": [80, 82], "565": [80, 82], "aftermath": 80, "562": [80, 82], "563": 80, "564": 80, "572": 80, "549": 80, "commandlin": 80, "578": [80, 82], "579": [80, 82], "584": [80, 84], "575": [80, 81], "569": [80, 81, 82], "metadirect": 80, "cl": 80, "iolength": [80, 84], "cab": 80, "revamp": 80, "c1502": 80, "calle": 80, "constraint": [80, 81, 97], "ass": 80, "eor": 80, "applyelementwis": 80, "kindcod": 80, "mvp": [80, 83], "mengjia": 80, "lyu": 80, "overload": [80, 89], "goto": [80, 86, 87], "symtab": 80, "16th": 80, "fftpack": [80, 81, 82, 84, 85, 86, 87, 88, 89], "341": 81, "cantera": [81, 99], "340": 81, "554": 81, "552": [81, 82, 84, 85, 86, 87, 88, 89], "597": [81, 84], "595": 81, "590": [81, 84], "587": 81, "598": [81, 82], "abort": 81, "sema": [81, 82], "append_arg": 81, "typeparam": 81, "array_upd": 81, "array_fetch": 81, "array_merge_stor": 81, "extract_valu": [81, 82], "insert_valu": [81, 82], "allocmem": [81, 84, 85, 86], "alloca": [81, 84], "field_index": [81, 84], "freemem": [81, 84, 85, 88], "tablegen": 81, "pin": [81, 82, 89], "char_convert": 81, "array_modifi": 81, "interop": 81, "affin": 81, "demot": 81, "cfg": 81, "canonic": 81, "doloophelp": 81, "ifbuild": 81, "firbuild": 81, "helper": 81, "mutablebox": 81, "array_load": 81, "array_coor": 81, "uuidgen": 81, "despit": 81, "smallvector": 81, "stringref": 81, "densemap": 81, "subprogramdetail": 81, "getinterfacesymbol": 81, "expr": [81, 88, 89], "c99": 81, "recoveri": [81, 88], "THEN": 81, "ieee_scalb": 81, "ieee_next_aft": 81, "ieee_next_down": 81, "ieee_next_up": 81, "mismatch": 81, "prescann": 81, "alr": 81, "nonspecifi": 81, "needexternalnamemangl": 81, "expung": 81, "bogu": [81, 87, 88], "admit": 81, "emit": [81, 86, 87, 88, 95], "unformat": 81, "footer": 81, "recl": [81, 84, 86, 87], "c919": 81, "triplet": 81, "govern": [81, 97], "administr": [81, 83], "moder": 81, "transpar": 81, "liaison": 81, "19th": 81, "repo": [82, 84, 85, 86, 87, 88, 89], "348": 82, "347": [82, 84, 85, 86, 87, 88, 89], "556": 82, "566": 82, "581": [82, 84], "npy": [82, 84, 95], "580": [82, 84, 85, 86, 87, 88, 89], "color": [82, 84, 85, 86, 87, 88, 89], "573": [82, 84], "602": 82, "fpm_compil": 82, "607": 82, "repair": 82, "612": 82, "613": [82, 84, 85], "616": [82, 101], "614": 82, "622": [82, 84, 85, 86], "608": [82, 84, 85, 86, 87, 88, 89], "env": [82, 84, 85, 86, 87, 88, 89], "ispoint": 82, "unreach": 82, "insert_on_rang": 82, "box_rank": 82, "box_addr": [82, 88], "box_dim": 82, "box_eles": 82, "fircg": [82, 84], "ext_embox": [82, 84], "ext_rebox": 82, "notifymatchfailur": [82, 84], "contral": 82, "targetrewrit": [82, 84], "rewrit": [82, 84, 85, 86, 88], "unnecessari": [82, 87], "workaround": [82, 89], "nowait": 82, "misus": 82, "ssa": 82, "extractvalueop": 82, "insetvalueop": 82, "insertonrangeop": 82, "getmodel": 82, "cfi_dim_t": 82, "descriptormodel": 82, "addendum": 82, "nullabl": 82, "jump": 82, "variad": 82, "packagingcon": 82, "youtub": 82, "enjoi": 82, "20th": 82, "behind": 83, "experienc": 83, "discov": 83, "inspir": 83, "flagship": 83, "outreach": 83, "stdlib_arrai": 83, "trueloc": [83, 84], "falseloc": [83, 84], "stdlib_random": 83, "stdlib_select": [83, 84], "introsort": 83, "david": 83, "musser": 83, "stdlib_specialfunct": 83, "stdlib_stats_distribution_norm": 83, "stdlib_stats_distribution_uniform": 83, "allevi": 83, "stdlib_stringlist_typ": 83, "stdlib_str": 83, "stdlib_vers": 83, "significantli": 83, "wider": 83, "numpi": [83, 94, 95], "scipi": [83, 94], "transit": 83, "bare": 83, "scaffold": 83, "truli": 83, "game": [83, 92, 93, 94], "pursu": 83, "spack": 83, "creator": 83, "fund": [83, 101], "plethora": 83, "idiomat": 83, "gotcha": 83, "daili": 83, "338": 83, "bite": 83, "fortrantip": 83, "netlib": 83, "brand": 83, "audienc": 83, "dftatom": [83, 99], "paid": [83, 86], "lab": 83, "minisymposium": 83, "uzh": 83, "tiziano": 83, "m\u00fcller": 83, "alfio": 83, "lazzaro": 83, "enterpris": 83, "thrive": 83, "pribec": 83, "j\u00e9r\u00e9mie": 83, "arxiv": [83, 87], "2109": 83, "07382": 83, "cite": 83, "citat": 83, "curcic2021toward": 83, "ert": 83, "ond": 83, "ej": 83, "mie": 83, "preprint": 83, "cise": [83, 87], "publicli": [83, 88], "gain": 83, "traction": 83, "wouldn": 83, "fortran_lang_2021": 83, "350": 84, "351": 84, "586": 84, "588": 84, "ctest": 84, "585": 84, "591": 84, "stdlib_stats_median": 84, "593": 84, "594": 84, "596": 84, "600": 84, "save_npi": 84, "getlin": 84, "609": 84, "610": 84, "stdlib_hash_procedur": 84, "611": [84, 85, 86, 87, 88, 89], "605": [84, 85], "604": [84, 85, 86, 87, 88, 89], "get_vari": [84, 85, 86, 87, 88, 89], "set_vari": [84, 85, 86, 87, 88, 89], "634": 84, "630": [84, 85], "box_isarrai": 84, "box_isptr": 84, "box_isalloc": 84, "boxchar": 84, "placehold": [84, 86], "disptach": 84, "select_cas": 84, "ispresentopconvers": 84, "absentopconvers": 84, "heap": [84, 88], "emboxchar": 84, "select_typ": 84, "selecttypeopconvers": 84, "unboxchar": 84, "global_len": 84, "llvmpointer": 84, "cmpc": 84, "gentypedesc": 84, "boxchar_len": 84, "haspar": 84, "fir_dtentryop": 84, "string_lit": 84, "shapeshift": 84, "box_tdesc": 84, "tdesc": 84, "constc": 84, "embox": [84, 88], "notifi": 84, "complextyp": 84, "no_reassoc": 84, "len_param_index": 84, "unimpl": 84, "unittest": 84, "ext_array_coor": 84, "xrebox": 84, "malloc": 84, "no_stop_messag": 84, "iscontigu": 84, "rag": 84, "exterior": 84, "outermost": 84, "edg": [84, 86, 87, 88], "ispureprocedur": 84, "predic": 84, "arrayref": [84, 89], "issimplycontiguoushelp": 84, "predefin": 84, "fno": [84, 87], "issav": 84, "issymplycontigu": 84, "rearrang": 84, "iscoarrai": 84, "todo": 84, "address_of": 84, "deadlock": 84, "closeal": 84, "standalon": 84, "freebsd": [84, 94], "bigint": 84, "21st": 84, "wrote": 84, "217": [85, 86, 87, 88], "gauss": 85, "spanish": 85, "zh_cn": 85, "chines": [85, 86], "653": [85, 86, 87, 88, 89], "652": [85, 86, 88, 89], "reloc": [85, 86], "dutch": [85, 86], "coordinate_of": [85, 88], "reenabl": 85, "overalloc": 85, "raggedarrayhead": 85, "ac": 85, "gnuinstalldir": 85, "gepop": 85, "stringif": 85, "cfi": [85, 86], "endfil": [85, 88], "sprint": [85, 88], "libasr": [85, 88, 89], "string_util": 85, "asr_scop": 85, "bwriter": 85, "nullifi": 85, "symbolt": [85, 88], "get_hash": 85, "expos": [85, 88], "rl_path": 85, "nominmax": 85, "lpython": [85, 88, 89], "visit_program": 85, "visit_subroutin": 85, "visit_funct": 85, "pywrap": 85, "zlib": [85, 94], "tobia": 85, "loew": 85, "22st": 85, "625": [86, 87, 88, 89], "paus": 86, "stmt": [86, 87], "array_access": [86, 87], "array_amend": [86, 87], "firinlinerinterfac": 86, "patch": 86, "tripl": [86, 89], "perf": 86, "growth": 86, "suppress": 86, "tco": 86, "piplin": 86, "memoryalloc": 86, "ieee_is_norm": 86, "ieee_is_neg": 86, "recycl": 86, "assert": [86, 98], "nullptr": 86, "dereferenc": 86, "flangoptimizertest": 86, "solari": 86, "establishdescriptor": 86, "character": [86, 88], "fma": 86, "fuse": 86, "prepar": [86, 87], "minpack": [86, 87, 88, 89], "23rd": 86, "379": 87, "383": 87, "381": 87, "629": 87, "build_test": 87, "631": 87, "637": 87, "675": 87, "backtrac": 87, "fpm_source_pars": 87, "677": 87, "684": 87, "v4": 87, "685": [87, 88, 89], "676": [87, 88], "shake": [87, 88], "671": [87, 88], "lpath": [87, 88], "arrayvaluecopi": 87, "linkonce_odr": 87, "random_": 87, "instrins": 87, "mllvm": 87, "enum": 87, "bbc": 87, "caught": 87, "rec": 87, "honor": 87, "provenancerang": 87, "shadow": [87, 88], "nonfat": 87, "modulelikeunit": 87, "evaluationlist": 87, "ispointerobject": 87, "dylib": 87, "ieee_except": 87, "hanld": 87, "typecod": 87, "msave": 87, "relax": [87, 88], "rebox": 87, "al": [87, 89], "24th": 87, "387": 88, "389": 88, "librsb": [88, 94, 97, 99], "elk": [88, 99], "pencil": [88, 97, 99], "392": 88, "propack": [88, 97], "nufft": [88, 89, 97], "396": [88, 89], "openfft": [88, 89, 94, 97], "395": [88, 89], "2decomp": [88, 89, 97, 99], "394": [88, 89], "slicot": [88, 89, 97, 99], "393": [88, 89], "fatod": [88, 89, 97, 99], "pic": 88, "651": 88, "656": [88, 89], "stdlib_io_npi": [88, 89], "loadtxt": [88, 89], "skiprow": [88, 89], "max_row": [88, 89], "688": 88, "fpm_model": 88, "692": [88, 89], "686": [88, 89], "misc": 88, "fulli": 88, "qualifi": 88, "interior": [88, 97], "mmlir": 88, "assembli": 88, "wsloop": 88, "parseclaus": 88, "reductionclauseinterfac": 88, "revert": 88, "privatis": 88, "pointerdealloc": 88, "fp": 88, "bz": 88, "kp": 88, "overrun": 88, "runtime_check": 88, "cycl": 88, "catcher": 88, "recov": 88, "genericdetail": 88, "dimag": 88, "dconjg": 88, "attach": 88, "clock_gettim": 88, "f0": 88, "finer": [88, 95], "getexpr": 88, "arith": 88, "extui": 88, "disambigu": 88, "dead": 88, "elemin": 88, "current_bodi": [88, 89], "arraybound": [88, 89], "blockcal": 88, "arrays": [88, 89], "associateblock": [88, 89], "asdl": 88, "functioncal": 88, "intial": 88, "call_fortran_i64": [88, 89], "i64": [88, 89], "f32": [88, 89], "f64": [88, 89], "cmake_install_prefix": 88, "build1": 88, "ubaid": [88, 89], "shaikh": [88, 89], "25th": 88, "401": 89, "403": 89, "seissol": [89, 99], "gauss_legendr": 89, "659": 89, "701": 89, "unstructur": [89, 99], "consum": 89, "bc": 89, "overridden": 89, "macosx": 89, "darwin": 89, "stub": 89, "taskwait": 89, "taskyield": 89, "cancellationpoint": 89, "emiss": 89, "untermin": 89, "unsupport": 89, "repetit": 89, "a0": 89, "fortran_main": 89, "nfci": 89, "eof": 89, "externalnameconversionpass": 89, "allocaop": 89, "allocmemop": 89, "lcobound": 89, "hollerith": 89, "visit_declar": 89, "visit_declarationutil": 89, "commonvisitor": 89, "kwarg": 89, "i32": 89, "mergechar": 89, "compulsori": 89, "dest_typ": 89, "source_typ": 89, "kind_valu": 89, "semanticerror": 89, "associate_06": 89, "integration_test": 89, "visitor": 89, "mangl": 89, "sprint_6": 89, "to_be_imported_lat": 89, "congjz": 89, "dotproduct": 89, "comptime_ev": 89, "ieee_is_nan": 89, "arraytransf": 89, "replaceargvisitor": 89, "generalis": [89, 99], "handle_return_typ": 89, "complexconstructor": 89, "classtyp": 89, "module_t": 89, "set_intrins": 89, "extract_dimensions_from_ttyp": 89, "cloc": 89, "arrayconst": 89, "passvisitor": 89, "get_bound": 89, "arrays_13": 89, "rv": 89, "stronger": 89, "verif": [89, 98], "cfpointer": 89, "bindc2": 89, "interfer": 89, "llvm_util": 89, "bindc3": 89, "intialis": 89, "bindc4": 89, "naman": 89, "gera": 89, "modules_18b": 89, "nested_var": 89, "rework": 89, "is_intrinsic_symbol": 89, "lfortran_intrinsic_math3": 89, "expr_typ": 89, "exprtypevisitor": 89, "expr_valu": 89, "exprvaluevisitor": 89, "convert_arg": 89, "visit_cfpoint": 89, "mkdoc": 89, "wat": 89, "wasm_visitor": 89, "emit_wat": 89, "ifdef": 89, "xsh": 89, "run_test": 89, "fortranevalu": 89, "get_wasm": 89, "asr_to_wasm_bytes_stream": 89, "asr_to_wasm": 89, "binop": 89, "wasm_instructions_visitor": 89, "deftyp": 89, "lfortran_intrinsic_str": 89, "bindc_01": 89, "callback2b": 89, "callback1b": 89, "tapasweni": 89, "pathak": 89, "doxygen": 89, "docstr": 89, "lfortran_sasin_api": 89, "retval": 89, "wasm_instruct": 89, "wasm_insts_visitor": 89, "build0": 89, "wasm_util": 89, "wasm_to_wat": 89, "get_wat": 89, "fortran_evalu": 89, "wat_debug": 89, "cout": 89, "load_fil": 89, "arteev": 89, "raina": 89, "ashirwad": 89, "mishra": 89, "henil": 89, "shalin": 89, "panchal": 89, "mohd": 89, "oshanath": 89, "rajawasam": 89, "26th": 89, "usernam": 90, "chemistri": [90, 97, 99], "od": [90, 92, 97, 99], "densiti": [90, 99], "rung": [90, 97, 99], "kutta": [90, 97, 99], "cfd": [90, 99], "hdf5": [90, 94, 95, 96, 97], "regex": [90, 91, 94, 96, 100], "json": [90, 95], "contour": [90, 93, 94], "coretran": [91, 96, 98, 100], "kd": [91, 96, 98, 100], "kdtree": [91, 96, 98, 100], "weekdai": 91, "fdict": 91, "dictionari": 91, "fycollect": 91, "kdtree2": 91, "epoch": 91, "moon": 91, "penf": [91, 97], "qcontain": 91, "qlibc": 91, "curs": 92, "nonlinear": [92, 97], "ordinari": [92, 97, 99], "stochast": [92, 97, 99], "tcp": [92, 94], "tsunami": 92, "shallow": 92, "water": 92, "easy_plplot": 93, "matplotlib": [93, 94], "plplot": [93, 94], "f03gl": [93, 94], "opengl": [93, 94], "motif": [93, 94], "x11": [93, 94], "sdl2": [93, 94], "directmedia": [93, 94], "sdl": [93, 94], "multimedia": [93, 94], "xlib": [93, 94], "mandelbrot": [93, 94], "raycast": [93, 94], "wirefram": [93, 94], "gtk": [93, 94], "biomolecular": 93, "pdb": 93, "m_draw": 93, "ogpf": [93, 94], "gnuplot": [93, 94], "anim": [93, 94], "pyplot": [93, 94], "histogram": [93, 94, 95, 96, 97], "aotu": 94, "opencl": 94, "clfortran": 94, "khrono": 94, "libomm": 94, "pexsi": 94, "eigenexa": 94, "slepc": 94, "bsepack": 94, "magma": 94, "fgsl": [94, 97], "fkb": 94, "kera": 94, "bridg": 94, "deep": 94, "neural": [94, 97, 99], "flibcpp": 94, "flook": 94, "focal": 94, "wrap": 94, "forpi": 94, "dict": 94, "tupl": 94, "libcurl": 94, "imap": 94, "smtp": 94, "gopher": 94, "lua53": 94, "pcre2": [94, 100], "pcre": [94, 100], "sqlite3": 94, "sqlite": [94, 96], "sql": 94, "databas": 94, "tcl86": 94, "tcl": 94, "tk": 94, "sysv": 94, "compress": [94, 99], "deflat": 94, "fortranlib": [94, 95, 96, 97], "stoke": [94, 95, 96, 97, 99], "fortyxima": [94, 98], "libc": [94, 98], "futil": [94, 95, 96, 97, 98, 99, 100], "har": [94, 95, 96, 97, 98, 99, 100], "timer": [94, 95, 96, 97, 98, 99, 100], "geometri": [94, 95, 96, 97, 98, 99, 100], "luaf": 94, "m_process": 94, "m_system": 94, "putenv": 94, "getenv": 94, "setenv": 94, "rmdir": 94, "rand": 94, "unam": 94, "openmpi": [94, 97, 99], "decomposit": [94, 97, 99], "scalapack": 94, "pbla": 94, "blac": 94, "sqliteff": 94, "thin": [94, 95], "config_fortran": 95, "feconv": 95, "mesh": [95, 96, 97, 99], "msh": 95, "nastran": [95, 99], "bdf": 95, "vtk": 95, "ini": 95, "ppm": [95, 96], "fox": 95, "xml": 95, "h5fortran": 95, "jsonff": 95, "m_io": 95, "slurp": 95, "swallow": 95, "dirnam": 95, "nc4fortran": 95, "netcdf4": 95, "netcdf": 95, "npz": 95, "parff": 95, "serialbox": 95, "python3": 95, "deseri": 95, "vtkfortran": 95, "flap": 96, "astrodynam": 96, "ncurs": 96, "m_cli": 96, "m_histori": 96, "redo": 96, "openshmem": 96, "nuclear": 96, "pointwis": 96, "multigroup": 96, "quantiti": [96, 97], "endf": 96, "yafyaml": 96, "arpack": 97, "eigenvalu": 97, "eigenvector": 97, "singular": 97, "svd": 97, "bspline": 97, "extrapol": 97, "dbcsr": 97, "compresse": 97, "hip": [97, 98], "ddeabm": 97, "adam": 97, "bashforth": 97, "cosmo": 97, "solvat": 97, "continuum": [97, 99], "pcm": 97, "cpcm": 97, "multivari": 97, "delaunai": 97, "triangul": 97, "medium": 97, "acm": 97, "dop853": 97, "hairer": 97, "elmerfem": 97, "fe": 97, "petaflop": 97, "adjoint": [97, 99], "flint": 97, "fmm2d": 97, "laplac": 97, "helmholtz": 97, "fmm3d": 97, "foodi": 97, "galahad": 97, "quadrat": 97, "convex": 97, "qmc": [97, 99], "incompress": 97, "navier": [97, 99], "equilibrium": 97, "green": 97, "transport": [97, 99], "alamo": 97, "toolbox": 97, "lagrit": 97, "callabl": 97, "3d": [97, 99], "ecef": 97, "enu": 97, "eci": 97, "microframework": 97, "nlesolv": 97, "massiv": [97, 99], "numdiff": 97, "jacobian": 97, "odepack": 97, "systemat": 97, "openbla": 97, "gotoblas2": 97, "paramont": 97, "mont": [97, 99], "matlab": 97, "mcmc": 97, "bayesian": 97, "pchip": 97, "piecewis": 97, "cubic": 97, "hermit": 97, "poisson": [97, 99], "lanczo": 97, "bidiagon": 97, "qnstop": 97, "quasi": 97, "newton": 97, "quadpack": 97, "quadpack2": 97, "quaff": 97, "regridpack": 97, "nonuniform": 97, "orthogon": 97, "rng_fortran": 97, "xoroshiro128": 97, "scifortran": 97, "shtool": 97, "spheric": 97, "harmon": 97, "slepian": 97, "gravit": 97, "magnet": [97, 99], "slsqp": 97, "constrain": 97, "vtmop": 97, "blackbox": 97, "multiobject": 97, "multicriteria": 97, "methodologi": 97, "camfort": 98, "light": 98, "erloff": 98, "f90wrap": 98, "findent": 98, "beautifi": 98, "fortrancallgraph": 98, "fprettifi": 98, "metaprogram": 98, "fytest": 98, "gftl": 98, "stl": 98, "dequ": 98, "queue": 98, "hipfort": 98, "rocm": 98, "pfunit": 98, "shroud": 98, "swig": 98, "veget": 98, "abinit": 99, "optic": 99, "vibrat": 99, "observ": 99, "adflow": 99, "ran": 99, "gradient": 99, "aerodynam": 99, "multiblock": 99, "overset": 99, "aenet": 99, "artifici": 99, "astro": 99, "astronomi": 99, "bandup": 99, "unfold": 99, "bigdft": 99, "initio": 99, "wavelet": 99, "turbul": 99, "chemic": 99, "kinet": 99, "thermodynam": 99, "castro": 99, "astrophys": 99, "radiat": 99, "hydrodynam": 99, "cfl3d": 99, "cell": 99, "upwind": 99, "bias": 99, "reynold": 99, "compdam_dgd": 99, "damag": 99, "cdm": 99, "abaqu": 99, "solid": 99, "metadynam": 99, "rotam": 99, "ensembl": 99, "ctsm": 99, "terrestri": 99, "dalton": 99, "relativist": 99, "damask": 99, "crystal": 99, "plastic": 99, "dispers": 99, "radial": 99, "schr\u00f6dinger": 99, "daresburi": 99, "1992": 99, "linearis": 99, "augment": 99, "lapw": 99, "cluster": 99, "multiscal": 99, "multilevel": 99, "fd": 99, "eddi": 99, "smoke": 99, "heat": 99, "fire": 99, "galerkin": 99, "fluiditi": 99, "fm": 99, "fortnet": 99, "behler": 99, "parrinello": 99, "bpnn": 99, "freecappuccino": 99, "ionospher": 99, "gyroradii": 99, "icar": 99, "atmospher": 99, "lesgo": 99, "lsdalton": 99, "mesa": 99, "stellar": 99, "mitgcm": 99, "circul": 99, "mom6": 99, "modular": 99, "mpa": 99, "climat": 99, "studi": 99, "fea": 99, "1970": 99, "eign": 99, "stabil": 99, "nek5000": 99, "hartre": 99, "fock": 99, "octopu": 99, "godunov": 99, "riemann": 99, "multiconfigur": 99, "casscf": 99, "caspt2": 99, "openswpc": 99, "seismic": 99, "particl": 99, "mass": 99, "spectrometri": 99, "espresso": 99, "nanoscal": 99, "quip": 99, "qm": 99, "phenomena": 99, "earthquak": 99, "ruptur": 99, "siesta": 99, "ordin": 99, "specfem3d": 99, "acoust": 99, "elast": 99, "poroelast": 99, "hexahedra": 99, "tinker": 99, "tracmass": 99, "lagrangian": 99, "trucha": 99, "multiphys": 99, "localis": 99, "wannier": 99, "whizard": 99, "wrf": 99, "forecast": 99, "semiempir": 99, "iso_varying_str": 100, "m_string": 100, "token": 100, "strff": 100, "stringifor": 100, "basenam": 100, "snapshot": 101, "seek": 101, "opportun": 101, "travers": 101, "entail": 101, "stdlib_o": 101, "multiprocess": 101, "oo": 101, "321": 101, "libsolv": 101, "npm": 101, "mpirun": 101, "elabor": 101, "broader": 101, "deeper": 101, "linter": 101, "471": 101, "705": 101, "pip": 101, "768": 101, "walkthrough": 101}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"commun": 0, "contribut": 1, "fortran": [1, 2, 3, 4, 6, 14, 18, 26, 34, 42, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 92, 96, 97, 101], "lang": [1, 2, 3, 4, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "org": [1, 3, 4, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "introduct": [1, 27], "workflow": 1, "style": [1, 18], "guid": [1, 18], "markdown": [1, 3], "extern": [1, 40], "link": [1, 25], "intern": 1, "site": 1, "icon": 1, "pack": [1, 29], "page": [1, 3], "content": [1, 34], "tutori": [1, 3, 52], "gener": [1, 19, 27, 35, 39, 93, 96], "code": [1, 21, 47, 54, 71, 75, 83, 90, 92, 101], "text": [1, 34, 47], "histori": 2, "creation": 2, "incub": 2, "j3": [2, 57], "repo": 2, "The": [2, 6, 20], "standard": [2, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 55, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "librari": [2, 26, 28, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 99, 100, 101], "stdlib": [2, 83], "packag": [2, 4, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 101], "manag": [2, 26, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 101], "fpm": [2, 83, 101], "discours": [2, 61, 83], "index": [2, 4, 32], "project": [2, 20, 83, 90], "migrat": 2, "fftpack": [2, 79, 83], "minipack": 2, "test": [2, 83, 98, 101], "drive": [2, 83], "vscode": 2, "support": [2, 101], "fortl": 2, "public": 2, "confer": [2, 83], "event": [2, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "mini": 3, "book": 3, "0": [3, 79], "format": 3, "1": 3, "singl": 3, "write": [3, 95], "your": [3, 22, 45], "2": [3, 57], "structur": [3, 19, 54], "head": 3, "3": [3, 42], "add": 3, "learn": [3, 7], "multi": 3, "creat": [3, 20], "new": [3, 4, 56, 75, 83], "folder": 3, "criteria": 4, "process": 4, "ad": 4, "request": 4, "after": 4, "entri": 4, "run": [4, 28], "github": 4, "action": 4, "fortran_packag": 4, "befor": 4, "build": [4, 20, 24, 33, 101], "sphinx": [4, 101], "host": 4, "non": 4, "member": [4, 50], "review": [4, 83], "checklist": 4, "compil": [5, 21, 24, 33, 43, 51, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "program": [6, 16, 22, 24, 32, 38, 90, 96], "languag": [6, 18, 24, 94], "allocat": [8, 49], "arrai": [8, 9, 11, 17, 19, 29, 38, 41, 49], "callback": [10, 19], "element": 11, "wise": 11, "oper": [11, 53], "file": [12, 23, 95, 101], "input": [12, 55, 90, 95], "output": [12, 55, 90], "float": [13, 55], "point": [13, 55], "number": 13, "best": 14, "practic": 14, "integ": 15, "divis": 15, "modul": [16, 19, 23, 54], "multidimension": 17, "name": [18, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42], "convent": 18, "indent": 18, "comparison": [18, 30], "other": [18, 94], "type": [19, 42, 50, 90, 91], "cast": 19, "work": [19, 79, 80, 81, 82, 84, 85, 86, 87], "privat": 19, "variabl": [19, 20, 32, 55], "nest": [19, 53], "function": [19, 35, 54], "us": [19, 20, 33, 38], "c_ptr": 19, "pointer": 19, "transfer": [19, 42], "intrins": [19, 34, 39], "object": [19, 25], "orient": 19, "approach": 19, "complet": 19, "exampl": [19, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 90], "void": 19, "v": [19, 32, 47], "tool": [20, 47], "make": [20, 27], "recurs": 20, "expand": 20, "comment": [20, 42], "whitespac": 20, "meson": 20, "system": [20, 40, 94, 101], "cmake": [20, 101], "sourc": [21, 59, 101], "distribut": [22, 101], "tabul": 22, "includ": 23, "static": 26, "dynam": [26, 49], "versu": 26, "gnu": 26, "linux": [26, 46], "gfortran": [26, 46, 64], "window": [26, 46], "intel": 26, "an": 27, "get": 27, "start": 27, "automat": 27, "depend": 27, "time": 28, "properti": [29, 37], "attribut": 29, "merg": 29, "synopsi": [29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42], "characterist": [29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42], "descript": [29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42], "option": [29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 50], "result": [29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42], "see": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "also": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], "spread": 29, "unpack": 29, "alloc": 29, "is_contigu": 29, "lbound": 29, "inquiri": [29, 30], "state": 29, "kind": [29, 42], "bit": [29, 30], "rank": [29, 37, 41], "shape": [29, 37, 41], "size": 29, "ubound": 29, "maxloc": 29, "minloc": 29, "findloc": 29, "transpos": 29, "all": 29, "ani": 29, "count": 29, "maxval": 29, "minval": 29, "product": [29, 41], "sum": 29, "reshap": 29, "level": 30, "manipul": [30, 32, 37, 100], "bge": 30, "sequenc": 30, "bgt": 30, "ble": 30, "blt": 30, "bit_siz": 30, "btest": 30, "storage_s": 30, "leadz": 30, "popcnt": 30, "poppar": 30, "trailz": 30, "dshiftl": 30, "note": [30, 32, 38, 42], "dshiftr": 30, "merge_bit": 30, "mvbit": 30, "ibit": 30, "ibclr": 30, "ibset": 30, "maskl": 30, "maskr": 30, "ipar": 30, "iall": 30, "iand": 30, "iani": 30, "ieor": 30, "ior": 30, "ishftc": 30, "ishft": 30, "shifta": 30, "shiftl": 30, "shiftr": 30, "procedur": [31, 32, 50], "bind": 31, "c": 31, "interfac": [31, 90, 93, 94], "c_associ": 31, "c_f_pointer": 31, "c_f_procpoint": 31, "c_funloc": 31, "c_loc": 31, "c_sizeof": 31, "basic": 32, "charact": [32, 49, 90, 100], "len": 32, "new_lin": 32, "repeat": 32, "achar": 32, "resourc": [32, 35, 37, 40, 41], "char": 32, "iachar": 32, "ichar": 32, "scan": 32, "verifi": 32, "sampl": 32, "i": [32, 42], "ii": 32, "iii": 32, "iv": 32, "lge": 32, "lgt": 32, "lle": 32, "llt": 32, "adjustl": 32, "adjustr": 32, "len_trim": 32, "trim": 32, "inform": [33, 40], "about": 33, "compiler_opt": 33, "compiler_vers": 33, "overview": 34, "copyright": 34, "mathemat": [35, 99], "aco": 35, "acosh": 35, "asin": 35, "asinh": 35, "atan": 35, "atan2": 35, "atanh": 35, "co": 35, "cosh": 35, "sin": 35, "extend": [35, 101], "haversin": 35, "formula": 35, "sinh": 35, "tan": 35, "tanh": 35, "random_numb": 35, "random_se": 35, "exp": 35, "log": [35, 98], "log10": 35, "sqrt": 35, "hypot": 35, "bessel_j0": 35, "bessel_j1": 35, "bessel_jn": 35, "bessel_y0": 35, "bessel_y1": 35, "bessel_yn": 35, "erf": 35, "erfc": 35, "erfc_scal": 35, "note1": [35, 39], "gamma": 35, "log_gamma": 35, "norm2": 35, "control": [36, 53], "queri": 36, "current": 36, "numer": [36, 37, 41, 90], "model": 36, "expon": 36, "fraction": 36, "nearest": 36, "rrspace": 36, "scale": 36, "set_expon": 36, "space": 36, "digit": 36, "epsilon": 36, "huge": 36, "maxexpon": 36, "minexpon": 36, "precis": [36, 42, 55], "radix": 36, "rang": 36, "tini": 36, "valu": [37, 41], "ab": 37, "aint": 37, "anint": 37, "ceil": 37, "conjg": 37, "dim": 37, "dprod": 37, "floor": 37, "max": 37, "min": 37, "mod": 37, "modulo": 37, "sign": 37, "cshift": [37, 41], "dot_product": [37, 41], "eoshift": [37, 41], "matmul": [37, 41], "argument": [37, 41], "logic": [37, 41, 42, 53], "pariti": [37, 41], "null": [37, 41], "parallel": 38, "co_arrai": 38, "co_index": 38, "co_broadcast": 38, "co_lbound": 38, "co_max": 38, "co_min": 38, "co_reduc": 38, "co_sum": 38, "co_ubound": 38, "event_queri": 38, "image_index": 38, "num_imag": 38, "this_imag": 38, "atomic_and": 38, "atomic_fetch_and": 38, "atomic_fetch_or": 38, "atomic_fetch_xor": 38, "atomic_or": 38, "atomic_xor": 38, "atomic_add": 38, "atomic_ca": 38, "atomic_defin": 38, "atomic_fetch_add": 38, "atomic_ref": 38, "miscellan": 39, "associ": 39, "extends_type_of": 39, "note2": 39, "is_iostat_end": 39, "is_iostat_eor": 39, "move_alloc": 39, "present": 39, "same_type_a": 39, "access": 40, "command_argument_count": 40, "get_command": 40, "get_command_argu": 40, "cpu_tim": 40, "date_and_tim": 40, "system_clock": 40, "execute_command_lin": 40, "get_environment_vari": 40, "matrix": 41, "multipl": 41, "dot": 41, "shift": 41, "reduc": 41, "data": [42, 90, 91, 93], "implicit": 42, "aimag": 42, "cmplx": 42, "doubl": 42, "o": [42, 45, 101], "int": 42, "nint": 42, "real": 42, "dble": 42, "out_of_rang": 42, "selected_char_kind": 42, "selected_int_kind": 42, "selected_real_kind": 42, "choos": 43, "id": 44, "set": 45, "up": 45, "instal": 46, "unix": 46, "like": 46, "develop": 46, "debian": 46, "base": 46, "ubuntu": 46, "mint": 46, "etc": [46, 97], "rpm": 46, "red": 46, "hat": 46, "enterpris": 46, "cento": 46, "fedora": 46, "opensus": 46, "arch": 46, "endeavouro": 46, "manjaro": 46, "maco": 46, "xcode": 46, "binari": 46, "homebrew": 46, "fink": 46, "macport": 46, "openbsd": 46, "opencoarrai": 46, "editor": 47, "configur": 47, "addit": 47, "sublimetext": 47, "atom": 47, "smart": 48, "tip": 48, "string": [49, 90, 100], "declar": [49, 50, 55], "slice": 49, "deriv": 50, "A": 50, "quick": 50, "take": 50, "detail": [50, 57], "bound": 50, "hello": 51, "world": 51, "setup": 51, "quickstart": 52, "flow": 53, "condit": 53, "construct": 53, "loop": 53, "do": 53, "while": 53, "statement": 53, "exit": 53, "cycl": 53, "tag": 53, "paralleliz": 53, "concurr": 53, "organis": 54, "subroutin": 54, "express": 55, "februari": [57, 69, 85], "2020": [57, 58, 60, 61, 62, 63, 64, 65, 66, 67], "meet": 57, "attend": 57, "propos": 57, "discuss": 57, "plenari": 57, "mondai": 57, "24": 57, "tuesdai": 57, "25": 57, "wednesdai": 57, "26": 57, "thursdai": 57, "27": 57, "fridai": 57, "28": 57, "skip": 57, "more": 57, "fortrancon": [58, 83], "open": 59, "direct": 59, "webinar": 59, "newslett": [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "mai": [60, 74, 88], "thi": 60, "websit": [60, 73], "wg5": 60, "convenor": 60, "candid": 60, "who": 60, "": 60, "hire": 60, "june": [61, 76, 89], "contributor": [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "juli": [62, 77], "august": [63, 78, 79], "benchmark": [63, 64], "classic": [63, 64, 65, 66, 67, 68, 69, 72, 74], "flang": [63, 64, 65, 66, 67, 68, 69, 72, 74, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89], "llvm": [63, 64, 65, 66, 67, 68, 69, 72, 74], "lfortran": [63, 64, 65, 66, 70, 72, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89], "septemb": [64, 79], "octob": [65, 80], "novemb": [66, 81], "decemb": [67, 82], "januari": [68, 84], "2021": [68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83], "march": [70, 86], "accept": 71, "googl": [71, 75, 83], "summer": [71, 75, 83], "april": [72, 87], "first": 73, "year": 73, "welcom": 75, "student": 75, "progress": [79, 80, 81, 82, 84, 85, 86, 87], "12": 79, "wa": 79, "releas": 79, "15": 79, "updat": 79, "master": 79, "sinc": 79, "last": 79, "social": 83, "media": 83, "doc": 83, "paper": 83, "packagingcon": 83, "summari": 83, "thank": 83, "2022": [84, 85, 86, 87, 88, 89], "contain": [90, 91], "pars": [90, 95], "graphic": 90, "plot": [90, 93], "user": [90, 93], "templat": [90, 92], "util": 90, "scientif": [90, 99], "advanc": 91, "class": 91, "demonstr": 92, "handl": [93, 98], "imag": 93, "devic": 94, "read": 95, "task": 96, "linear": 97, "algebra": 97, "optim": 97, "root": 97, "find": 97, "error": 98, "document": [98, 101], "applic": 99, "appli": 99, "problem": 99, "roadmap": 101, "omit": 101, "toc": 101, "integr": 101, "subprocess": 101, "spars": 101, "matric": 101, "registri": 101, "version": 101, "constraint": 101, "resolut": 101, "iz": 101, "ecosystem": 101, "foreign": 101, "modern": 101, "visual": 101, "studio": 101, "extens": 101, "local": 101}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"Community": [[0, "community"]], "Contributing to fortran-lang.org": [[1, "contributing-to-fortran-lang-org"]], "Introduction": [[1, "introduction"]], "Workflow": [[1, "workflow"]], "Style guide": [[1, "style-guide"]], "Markdown": [[1, "markdown"]], "External links": [[1, "external-links"]], "Internal site links": [[1, "internal-site-links"]], "Icon packs": [[1, "icon-packs"]], "Page contents": [[1, "page-contents"]], "Tutorials": [[1, "tutorials"]], "General": [[1, "general"]], "Code style": [[1, "code-style"]], "Text": [[1, "text"]], "Fortran-lang history": [[2, "fortran-lang-history"]], "Creation": [[2, "creation"]], "Incubator J3 repo": [[2, "incubator-j3-repo"]], "The Fortran Standard Library stdlib": [[2, "the-fortran-standard-library-stdlib"]], "The Fortran Package Manager fpm": [[2, "the-fortran-package-manager-fpm"]], "Fortran Discourse": [[2, "fortran-discourse"], [61, "fortran-discourse"]], "Fortran Package Index": [[2, "fortran-package-index"]], "Project migration to Fortran-lang": [[2, "project-migration-to-fortran-lang"]], "fftpack": [[2, "fftpack"], [83, "fftpack"]], "minipack": [[2, "minipack"]], "test-drive": [[2, "test-drive"], [83, "test-drive"]], "vscode-fortran-support": [[2, "vscode-fortran-support"]], "fortls": [[2, "fortls"]], "Fortran Publication": [[2, "fortran-publication"]], "Conferences and Events": [[2, "conferences-and-events"]], "Mini-book Tutorials on fortran-lang.org": [[3, "mini-book-tutorials-on-fortran-lang-org"]], "0. Mini-book formats": [[3, "mini-book-formats"]], "1. Single-page mini-book": [[3, "single-page-mini-book"]], "1.1 Writing your mini-book in markdown": [[3, "writing-your-mini-book-in-markdown"]], "1.2 Structuring your mini-book with headings": [[3, "structuring-your-mini-book-with-headings"]], "1.3 Add your mini-book to the Learn page": [[3, "add-your-mini-book-to-the-learn-page"]], "2. Multi-page mini-books": [[3, "multi-page-mini-books"]], "2.1 Create a new folder for your mini-book": [[3, "create-a-new-folder-for-your-mini-book"]], "2.2 Add pages to your mini-book": [[3, "add-pages-to-your-mini-book"]], "2.3 Add your mini-book to the Learn page": [[3, "id1"]], "Fortran-lang.org package index": [[4, "fortran-lang-org-package-index"]], "Package criteria": [[4, "package-criteria"]], "Process for adding packages": [[4, "process-for-adding-packages"]], "Package index requests": [[4, "package-index-requests"]], "After adding a new entry to package index, run the github action fortran_packages before building the sphinx build.": [[4, "after-adding-a-new-entry-to-package-index-run-the-github-action-fortran-packages-before-building-the-sphinx-build"]], "Github hosted packages": [[4, "github-hosted-packages"]], "Non-github hosted packages": [[4, "non-github-hosted-packages"]], "Member review checklist": [[4, "member-review-checklist"]], "Compilers": [[5, "compilers"], [64, "compilers"], [65, "compilers"], [66, "compilers"], [67, "compilers"], [68, "compilers"], [69, "compilers"], [70, "compilers"], [72, "compilers"], [74, "compilers"], [76, "compilers"], [77, "compilers"], [78, "compilers"], [79, "compilers"], [80, "compilers"], [81, "compilers"], [82, "compilers"], [84, "compilers"], [85, "compilers"], [86, "compilers"], [87, "compilers"], [88, "compilers"], [89, "compilers"]], "The Fortran Programming Language": [[6, "the-fortran-programming-language"]], "Learn": [[7, "learn"]], "Allocatable Arrays": [[8, "allocatable-arrays"]], "Arrays": [[9, "arrays"]], "Callbacks": [[10, "callbacks"]], "Element-wise Operations on Arrays": [[11, "element-wise-operations-on-arrays"]], "File Input/Output": [[12, "file-input-output"]], "Floating Point Numbers": [[13, "floating-point-numbers"]], "Fortran Best Practices": [[14, "fortran-best-practices"]], "Integer Division": [[15, "integer-division"]], "Modules and Programs": [[16, "modules-and-programs"]], "Multidimensional Arrays": [[17, "multidimensional-arrays"]], "Fortran Style Guide": [[18, "fortran-style-guide"]], "Naming Convention": [[18, "naming-convention"]], "Indentation": [[18, "indentation"]], "Comparison to Other Languages": [[18, "comparison-to-other-languages"]], "Type Casting in Callbacks": [[19, "type-casting-in-callbacks"]], "Work Arrays": [[19, "work-arrays"]], "General Structure": [[19, "general-structure"]], "Private Module Variables": [[19, "private-module-variables"]], "Nested functions": [[19, "nested-functions"]], "Using type(c_ptr) Pointer": [[19, "using-type-c-ptr-pointer"]], "transfer() Intrinsic Function": [[19, "transfer-intrinsic-function"]], "Object Oriented Approach": [[19, "object-oriented-approach"]], "Complete Example of void * vs type(c_ptr) and transfer()": [[19, "complete-example-of-void-vs-type-c-ptr-and-transfer"]], "Build tools": [[20, "build-tools"]], "Using make as build tool": [[20, "using-make-as-build-tool"]], "Recursively expanded variables": [[20, "recursively-expanded-variables"]], "Comments and whitespace": [[20, "comments-and-whitespace"]], "The meson build system": [[20, "the-meson-build-system"]], "Creating a CMake project": [[20, "creating-a-cmake-project"]], "Compiling the source code": [[21, "compiling-the-source-code"]], "Distributing your programs": [[22, "distributing-your-programs"]], "Distributing the tabulation program": [[22, "distributing-the-tabulation-program"]], "Include files and modules": [[23, "include-files-and-modules"]], "Building programs": [[24, "building-programs"]], "Compiled languages": [[24, "compiled-languages"]], "Linking the objects": [[25, "linking-the-objects"]], "Managing libraries (static and dynamic libraries)": [[26, "managing-libraries-static-and-dynamic-libraries"]], "Static versus dynamic libraries": [[26, "static-versus-dynamic-libraries"]], "GNU/Linux and gfortran": [[26, "gnu-linux-and-gfortran"]], "Windows and Intel Fortran": [[26, "windows-and-intel-fortran"]], "An introduction to make": [[27, "an-introduction-to-make"]], "Getting started": [[27, "getting-started"]], "Automatically generated dependencies": [[27, "automatically-generated-dependencies"]], "Run-time libraries": [[28, "run-time-libraries"]], "Properties and attributes of arrays": [[29, "properties-and-attributes-of-arrays"]], "merge": [[29, "merge"]], "Name": [[29, "name"], [29, "id1"], [29, "id10"], [29, "id19"], [29, "id28"], [29, "id37"], [29, "id46"], [29, "id55"], [29, "id69"], [29, "id82"], [29, "id95"], [29, "id108"], [29, "id117"], [29, "id126"], [29, "id136"], [29, "id145"], [29, "id154"], [29, "id163"], [29, "id172"], [29, "id181"], [29, "id190"], [29, "id199"], [29, "id208"], [30, "name"], [30, "id1"], [30, "id10"], [30, "id19"], [30, "id28"], [30, "id37"], [30, "id46"], [30, "id55"], [30, "id64"], [30, "id73"], [30, "id82"], [30, "id91"], [30, "id100"], [30, "id110"], [30, "id119"], [30, "id127"], [30, "id136"], [30, "id145"], [30, "id154"], [30, "id163"], [30, "id172"], [30, "id180"], [30, "id189"], [30, "id198"], [30, "id207"], [30, "id216"], [30, "id225"], [30, "id234"], [30, "id243"], [30, "id252"], [30, "id261"], [30, "id270"], [31, "name"], [31, "id1"], [31, "id9"], [31, "id17"], [31, "id26"], [31, "id35"], [32, "name"], [32, "id1"], [32, "id10"], [32, "id20"], [32, "id29"], [32, "id38"], [32, "id47"], [32, "id56"], [32, "id65"], [32, "id74"], [32, "id83"], [32, "id92"], [32, "id101"], [32, "id110"], [32, "id119"], [32, "id128"], [32, "id137"], [32, "id146"], [33, "name"], [33, "id1"], [35, "name"], [35, "id1"], [35, "id11"], [35, "id21"], [35, "id31"], [35, "id41"], [35, "id51"], [35, "id61"], [35, "id71"], [35, "id81"], [35, "id91"], [35, "id101"], [35, "id110"], [35, "id120"], [35, "id128"], [35, "id136"], [35, "id146"], [35, "id155"], [35, "id164"], [35, "id173"], [35, "id182"], [35, "id191"], [35, "id200"], [35, "id208"], [35, "id217"], [35, "id226"], [35, "id235"], [35, "id245"], [35, "id255"], [35, "id264"], [35, "id274"], [35, "id284"], [35, "id293"], [36, "name"], [36, "id1"], [36, "id10"], [36, "id19"], [36, "id27"], [36, "id36"], [36, "id45"], [36, "id54"], [36, "id63"], [36, "id72"], [36, "id81"], [36, "id90"], [36, "id99"], [36, "id108"], [36, "id117"], [36, "id126"], [37, "name"], [37, "id1"], [37, "id10"], [37, "id19"], [37, "id28"], [37, "id37"], [37, "id46"], [37, "id55"], [37, "id64"], [37, "id73"], [37, "id82"], [37, "id91"], [37, "id100"], [37, "id109"], [37, "id119"], [37, "id128"], [37, "id137"], [37, "id147"], [37, "id156"], [38, "name"], [38, "id1"], [38, "id8"], [38, "id16"], [38, "id24"], [38, "id32"], [38, "id40"], [38, "id48"], [38, "id56"], [38, "id65"], [38, "id74"], [38, "id83"], [38, "id91"], [38, "id99"], [38, "id107"], [38, "id115"], [38, "id123"], [38, "id132"], [38, "id140"], [38, "id148"], [38, "id156"], [38, "id164"], [39, "name"], [39, "id1"], [39, "id10"], [39, "id19"], [39, "id28"], [39, "id36"], [39, "id44"], [40, "name"], [40, "id1"], [40, "id10"], [40, "id20"], [40, "id28"], [40, "id36"], [40, "id44"], [40, "id52"], [41, "name"], [41, "id2"], [41, "id11"], [41, "id20"], [41, "id30"], [41, "id39"], [41, "id48"], [42, "name"], [42, "id1"], [42, "id10"], [42, "id19"], [42, "id28"], [42, "id37"], [42, "id46"], [42, "id55"], [42, "id64"], [42, "id73"], [42, "id82"], [42, "id91"], [42, "id100"]], "Synopsis": [[29, "synopsis"], [29, "id2"], [29, "id11"], [29, "id20"], [29, "id29"], [29, "id38"], [29, "id47"], [29, "id56"], [29, "id70"], [29, "id83"], [29, "id96"], [29, "id109"], [29, "id118"], [29, "id127"], [29, "id137"], [29, "id146"], [29, "id155"], [29, "id164"], [29, "id173"], [29, "id182"], [29, "id191"], [29, "id200"], [29, "id209"], [30, "synopsis"], [30, "id2"], [30, "id11"], [30, "id20"], [30, "id29"], [30, "id38"], [30, "id47"], [30, "id56"], [30, "id65"], [30, "id74"], [30, "id83"], [30, "id92"], [30, "id101"], [30, "id111"], [30, "id120"], [30, "id128"], [30, "id137"], [30, "id146"], [30, "id155"], [30, "id164"], [30, "id173"], [30, "id181"], [30, "id190"], [30, "id199"], [30, "id208"], [30, "id217"], [30, "id226"], [30, "id235"], [30, "id244"], [30, "id253"], [30, "id262"], [30, "id271"], [31, "synopsis"], [31, "id2"], [31, "id10"], [31, "id18"], [31, "id27"], [31, "id36"], [32, "synopsis"], [32, "id2"], [32, "id11"], [32, "id21"], [32, "id30"], [32, "id39"], [32, "id48"], [32, "id57"], [32, "id66"], [32, "id75"], [32, "id84"], [32, "id93"], [32, "id102"], [32, "id111"], [32, "id120"], [32, "id129"], [32, "id138"], [32, "id147"], [33, "synopsis"], [33, "id2"], [35, "synopsis"], [35, "id2"], [35, "id12"], [35, "id22"], [35, "id32"], [35, "id42"], [35, "id52"], [35, "id62"], [35, "id72"], [35, "id82"], [35, "id92"], [35, "id102"], [35, "id111"], [35, "id121"], [35, "id129"], [35, "id137"], [35, "id147"], [35, "id156"], [35, "id165"], [35, "id174"], [35, "id183"], [35, "id192"], [35, "id201"], [35, "id209"], [35, "id218"], [35, "id227"], [35, "id236"], [35, "id246"], [35, "id256"], [35, "id265"], [35, "id275"], [35, "id285"], [35, "id294"], [36, "synopsis"], [36, "id2"], [36, "id11"], [36, "id20"], [36, "id28"], [36, "id37"], [36, "id46"], [36, "id55"], [36, "id64"], [36, "id73"], [36, "id82"], [36, "id91"], [36, "id100"], [36, "id109"], [36, "id118"], [36, "id127"], [37, "synopsis"], [37, "id2"], [37, "id11"], [37, "id20"], [37, "id29"], [37, "id38"], [37, "id47"], [37, "id56"], [37, "id65"], [37, "id74"], [37, "id83"], [37, "id92"], [37, "id101"], [37, "id110"], [37, "id120"], [37, "id129"], [37, "id138"], [37, "id148"], [37, "id157"], [38, "synopsis"], [38, "id2"], [38, "id9"], [38, "id17"], [38, "id25"], [38, "id33"], [38, "id41"], [38, "id49"], [38, "id57"], [38, "id66"], [38, "id75"], [38, "id84"], [38, "id92"], [38, "id100"], [38, "id108"], [38, "id116"], [38, "id124"], [38, "id133"], [38, "id141"], [38, "id149"], [38, "id157"], [38, "id165"], [39, "synopsis"], [39, "id2"], [39, "id11"], [39, "id20"], [39, "id29"], [39, "id37"], [39, "id45"], [40, "synopsis"], [40, "id2"], [40, "id11"], [40, "id21"], [40, "id29"], [40, "id37"], [40, "id45"], [40, "id53"], [41, "synopsis"], [41, "id3"], [41, "id12"], [41, "id21"], [41, "id31"], [41, "id40"], [41, "id49"], [42, "synopsis"], [42, "id2"], [42, "id11"], [42, "id20"], [42, "id29"], [42, "id38"], [42, "id47"], [42, "id56"], [42, "id65"], [42, "id74"], [42, "id83"], [42, "id92"], [42, "id101"]], "Characteristics": [[29, "characteristics"], [29, "id3"], [29, "id12"], [29, "id21"], [29, "id30"], [29, "id39"], [29, "id48"], [29, "id57"], [29, "id71"], [29, "id84"], [29, "id97"], [29, "id110"], [29, "id119"], [29, "id128"], [29, "id138"], [29, "id147"], [29, "id156"], [29, "id165"], [29, "id174"], [29, "id183"], [29, "id192"], [29, "id201"], [29, "id210"], [30, "characteristics"], [30, "id3"], [30, "id12"], [30, "id21"], [30, "id30"], [30, "id39"], [30, "id48"], [30, "id57"], [30, "id66"], [30, "id75"], [30, "id84"], [30, "id93"], [30, "id102"], [30, "id112"], [30, "id121"], [30, "id129"], [30, "id138"], [30, "id147"], [30, "id156"], [30, "id165"], [30, "id182"], [30, "id191"], [30, "id200"], [30, "id209"], [30, "id218"], [30, "id227"], [30, "id236"], [30, "id245"], [30, "id254"], [30, "id263"], [30, "id272"], [31, "characteristics"], [31, "id3"], [31, "id11"], [31, "id19"], [31, "id28"], [31, "id37"], [32, "characteristics"], [32, "id3"], [32, "id12"], [32, "id22"], [32, "id31"], [32, "id40"], [32, "id49"], [32, "id58"], [32, "id67"], [32, "id76"], [32, "id85"], [32, "id94"], [32, "id103"], [32, "id112"], [32, "id121"], [32, "id130"], [32, "id139"], [32, "id148"], [33, "characteristics"], [33, "id3"], [35, "characteristics"], [35, "id3"], [35, "id13"], [35, "id23"], [35, "id33"], [35, "id43"], [35, "id53"], [35, "id63"], [35, "id73"], [35, "id83"], [35, "id93"], [35, "id103"], [35, "id112"], [35, "id122"], [35, "id130"], [35, "id138"], [35, "id148"], [35, "id157"], [35, "id166"], [35, "id175"], [35, "id184"], [35, "id193"], [35, "id210"], [35, "id219"], [35, "id228"], [35, "id237"], [35, "id247"], [35, "id257"], [35, "id266"], [35, "id276"], [35, "id286"], [35, "id295"], [36, "characteristics"], [36, "id3"], [36, "id12"], [36, "id21"], [36, "id29"], [36, "id38"], [36, "id47"], [36, "id56"], [36, "id65"], [36, "id74"], [36, "id83"], [36, "id92"], [36, "id101"], [36, "id110"], [36, "id119"], [36, "id128"], [37, "characteristics"], [37, "id3"], [37, "id12"], [37, "id21"], [37, "id30"], [37, "id39"], [37, "id48"], [37, "id57"], [37, "id66"], [37, "id75"], [37, "id84"], [37, "id93"], [37, "id102"], [37, "id111"], [37, "id121"], [37, "id130"], [37, "id139"], [37, "id149"], [37, "id158"], [38, "characteristics"], [38, "id3"], [38, "id10"], [38, "id18"], [38, "id26"], [38, "id34"], [38, "id42"], [38, "id50"], [38, "id58"], [38, "id67"], [38, "id76"], [38, "id85"], [38, "id93"], [38, "id101"], [38, "id109"], [38, "id117"], [38, "id125"], [38, "id126"], [38, "id134"], [38, "id142"], [38, "id150"], [38, "id158"], [38, "id166"], [39, "characteristics"], [39, "id3"], [39, "id12"], [39, "id21"], [39, "id30"], [39, "id38"], [39, "id46"], [40, "characteristics"], [40, "id3"], [40, "id12"], [40, "id22"], [40, "id30"], [40, "id38"], [40, "id46"], [40, "id54"], [41, "characteristics"], [41, "id4"], [41, "id13"], [41, "id22"], [41, "id32"], [41, "id41"], [41, "id50"], [42, "characteristics"], [42, "id3"], [42, "id12"], [42, "id21"], [42, "id30"], [42, "id39"], [42, "id48"], [42, "id57"], [42, "id66"], [42, "id75"], [42, "id84"], [42, "id93"], [42, "id102"]], "Description": [[29, "description"], [29, "id4"], [29, "id13"], [29, "id22"], [29, "id31"], [29, "id40"], [29, "id49"], [29, "id58"], [29, "id72"], [29, "id85"], [29, "id98"], [29, "id111"], [29, "id120"], [29, "id129"], [29, "id139"], [29, "id148"], [29, "id157"], [29, "id166"], [29, "id175"], [29, "id184"], [29, "id193"], [29, "id202"], [29, "id211"], [30, "description"], [30, "id4"], [30, "id13"], [30, "id22"], [30, "id31"], [30, "id40"], [30, "id49"], [30, "id58"], [30, "id67"], [30, "id76"], [30, "id85"], [30, "id94"], [30, "id103"], [30, "id113"], [30, "id122"], [30, "id130"], [30, "id139"], [30, "id148"], [30, "id157"], [30, "id166"], [30, "id174"], [30, "id183"], [30, "id192"], [30, "id201"], [30, "id210"], [30, "id219"], [30, "id228"], [30, "id237"], [30, "id246"], [30, "id255"], [30, "id264"], [30, "id273"], [31, "description"], [31, "id4"], [31, "id12"], [31, "id20"], [31, "id29"], [31, "id38"], [32, "description"], [32, "id4"], [32, "id13"], [32, "id23"], [32, "id32"], [32, "id41"], [32, "id50"], [32, "id59"], [32, "id68"], [32, "id77"], [32, "id86"], [32, "id95"], [32, "id104"], [32, "id113"], [32, "id122"], [32, "id131"], [32, "id140"], [32, "id149"], [33, "description"], [33, "id4"], [35, "description"], [35, "id4"], [35, "id14"], [35, "id24"], [35, "id34"], [35, "id44"], [35, "id54"], [35, "id64"], [35, "id74"], [35, "id84"], [35, "id94"], [35, "id104"], [35, "id113"], [35, "id123"], [35, "id131"], [35, "id139"], [35, "id149"], [35, "id158"], [35, "id167"], [35, "id176"], [35, "id185"], [35, "id194"], [35, "id202"], [35, "id211"], [35, "id220"], [35, "id229"], [35, "id238"], [35, "id248"], [35, "id258"], [35, "id267"], [35, "id277"], [35, "id287"], [35, "id296"], [36, "description"], [36, "id4"], [36, "id13"], [36, "id22"], [36, "id30"], [36, "id39"], [36, "id48"], [36, "id57"], [36, "id66"], [36, "id75"], [36, "id84"], [36, "id93"], [36, "id102"], [36, "id111"], [36, "id120"], [36, "id129"], [37, "description"], [37, "id4"], [37, "id13"], [37, "id22"], [37, "id31"], [37, "id40"], [37, "id49"], [37, "id58"], [37, "id67"], [37, "id76"], [37, "id85"], [37, "id94"], [37, "id103"], [37, "id112"], [37, "id122"], [37, "id131"], [37, "id140"], [37, "id150"], [37, "id159"], [38, "description"], [38, "id4"], [38, "id11"], [38, "id19"], [38, "id27"], [38, "id35"], [38, "id43"], [38, "id51"], [38, "id59"], [38, "id68"], [38, "id77"], [38, "id86"], [38, "id94"], [38, "id102"], [38, "id110"], [38, "id118"], [38, "id127"], [38, "id135"], [38, "id143"], [38, "id151"], [38, "id159"], [38, "id167"], [39, "description"], [39, "id4"], [39, "id13"], [39, "id22"], [39, "id31"], [39, "id39"], [39, "id47"], [40, "description"], [40, "id4"], [40, "id13"], [40, "id23"], [40, "id31"], [40, "id39"], [40, "id47"], [40, "id55"], [41, "description"], [41, "id5"], [41, "id14"], [41, "id23"], [41, "id33"], [41, "id42"], [41, "id51"], [42, "description"], [42, "id4"], [42, "id13"], [42, "id22"], [42, "id31"], [42, "id40"], [42, "id49"], [42, "id58"], [42, "id67"], [42, "id76"], [42, "id85"], [42, "id94"], [42, "id103"]], "Options": [[29, "options"], [29, "id5"], [29, "id14"], [29, "id23"], [29, "id32"], [29, "id41"], [29, "id50"], [29, "id59"], [29, "id73"], [29, "id86"], [29, "id99"], [29, "id112"], [29, "id121"], [29, "id130"], [29, "id140"], [29, "id149"], [29, "id158"], [29, "id167"], [29, "id176"], [29, "id185"], [29, "id194"], [29, "id203"], [29, "id212"], [30, "options"], [30, "id5"], [30, "id14"], [30, "id23"], [30, "id32"], [30, "id41"], [30, "id50"], [30, "id59"], [30, "id68"], [30, "id77"], [30, "id86"], [30, "id95"], [30, "id105"], [30, "id114"], [30, "id123"], [30, "id131"], [30, "id140"], [30, "id149"], [30, "id158"], [30, "id167"], [30, "id175"], [30, "id184"], [30, "id193"], [30, "id202"], [30, "id211"], [30, "id220"], [30, "id229"], [30, "id238"], [30, "id247"], [30, "id256"], [30, "id265"], [30, "id274"], [31, "options"], [31, "id5"], [31, "id13"], [31, "id21"], [31, "id30"], [31, "id39"], [32, "options"], [32, "id5"], [32, "id14"], [32, "id24"], [32, "id33"], [32, "id42"], [32, "id51"], [32, "id60"], [32, "id69"], [32, "id78"], [32, "id87"], [32, "id96"], [32, "id105"], [32, "id114"], [32, "id123"], [32, "id132"], [32, "id141"], [32, "id150"], [33, "options"], [33, "id5"], [35, "options"], [35, "id5"], [35, "id15"], [35, "id25"], [35, "id35"], [35, "id45"], [35, "id55"], [35, "id65"], [35, "id75"], [35, "id85"], [35, "id95"], [35, "id105"], [35, "id114"], [35, "id124"], [35, "id132"], [35, "id140"], [35, "id150"], [35, "id159"], [35, "id168"], [35, "id177"], [35, "id186"], [35, "id195"], [35, "id203"], [35, "id212"], [35, "id221"], [35, "id230"], [35, "id239"], [35, "id249"], [35, "id259"], [35, "id268"], [35, "id278"], [35, "id288"], [35, "id297"], [36, "options"], [36, "id5"], [36, "id14"], [36, "id23"], [36, "id31"], [36, "id40"], [36, "id49"], [36, "id58"], [36, "id67"], [36, "id76"], [36, "id85"], [36, "id94"], [36, "id103"], [36, "id112"], [36, "id121"], [36, "id130"], [37, "options"], [37, "id5"], [37, "id14"], [37, "id23"], [37, "id32"], [37, "id41"], [37, "id50"], [37, "id59"], [37, "id68"], [37, "id77"], [37, "id86"], [37, "id95"], [37, "id104"], [37, "id113"], [37, "id123"], [37, "id132"], [37, "id141"], [37, "id151"], [37, "id160"], [38, "options"], [38, "id5"], [38, "id12"], [38, "id20"], [38, "id28"], [38, "id36"], [38, "id44"], [38, "id52"], [38, "id60"], [38, "id69"], [38, "id78"], [38, "id87"], [38, "id95"], [38, "id103"], [38, "id111"], [38, "id119"], [38, "id128"], [38, "id136"], [38, "id144"], [38, "id152"], [38, "id160"], [38, "id168"], [39, "options"], [39, "id14"], [39, "id23"], [39, "id32"], [39, "id40"], [39, "id48"], [40, "options"], [40, "id14"], [40, "id32"], [40, "id40"], [40, "id48"], [40, "id56"], [41, "options"], [41, "id6"], [41, "id15"], [41, "id24"], [41, "id34"], [41, "id43"], [41, "id52"], [42, "options"], [42, "id5"], [42, "id14"], [42, "id23"], [42, "id32"], [42, "id41"], [42, "id50"], [42, "id59"], [42, "id68"], [42, "id77"], [42, "id86"], [42, "id95"], [42, "id104"]], "Result": [[29, "result"], [29, "id6"], [29, "id15"], [29, "id24"], [29, "id33"], [29, "id42"], [29, "id51"], [29, "id60"], [29, "id74"], [29, "id87"], [29, "id100"], [29, "id113"], [29, "id122"], [29, "id131"], [29, "id132"], [29, "id141"], [29, "id150"], [29, "id159"], [29, "id168"], [29, "id177"], [29, "id186"], [29, "id195"], [29, "id204"], [29, "id213"], [30, "result"], [30, "id6"], [30, "id15"], [30, "id24"], [30, "id33"], [30, "id42"], [30, "id51"], [30, "id60"], [30, "id69"], [30, "id78"], [30, "id87"], [30, "id96"], [30, "id106"], [30, "id115"], [30, "id132"], [30, "id141"], [30, "id150"], [30, "id159"], [30, "id168"], [30, "id176"], [30, "id185"], [30, "id194"], [30, "id203"], [30, "id212"], [30, "id221"], [30, "id230"], [30, "id239"], [30, "id248"], [30, "id257"], [30, "id266"], [30, "id275"], [31, "result"], [31, "id22"], [31, "id31"], [31, "id40"], [32, "result"], [32, "id6"], [32, "id15"], [32, "id25"], [32, "id34"], [32, "id43"], [32, "id52"], [32, "id61"], [32, "id70"], [32, "id79"], [32, "id88"], [32, "id97"], [32, "id106"], [32, "id115"], [32, "id124"], [32, "id133"], [32, "id142"], [32, "id151"], [33, "result"], [33, "id6"], [35, "result"], [35, "id6"], [35, "id16"], [35, "id26"], [35, "id36"], [35, "id46"], [35, "id56"], [35, "id66"], [35, "id76"], [35, "id86"], [35, "id96"], [35, "id106"], [35, "id115"], [35, "id141"], [35, "id151"], [35, "id160"], [35, "id169"], [35, "id178"], [35, "id187"], [35, "id196"], [35, "id204"], [35, "id213"], [35, "id222"], [35, "id231"], [35, "id240"], [35, "id250"], [35, "id260"], [35, "id269"], [35, "id279"], [35, "id289"], [35, "id298"], [36, "result"], [36, "id6"], [36, "id15"], [36, "id24"], [36, "id32"], [36, "id41"], [36, "id50"], [36, "id59"], [36, "id68"], [36, "id77"], [36, "id86"], [36, "id95"], [36, "id104"], [36, "id113"], [36, "id122"], [36, "id131"], [37, "result"], [37, "id6"], [37, "id15"], [37, "id24"], [37, "id33"], [37, "id42"], [37, "id51"], [37, "id60"], [37, "id69"], [37, "id78"], [37, "id87"], [37, "id96"], [37, "id105"], [37, "id114"], [37, "id124"], [37, "id133"], [37, "id142"], [37, "id152"], [37, "id161"], [38, "result"], [38, "id45"], [38, "id61"], [38, "id70"], [38, "id79"], [39, "result"], [39, "id6"], [39, "id15"], [39, "id24"], [39, "id41"], [39, "id49"], [40, "result"], [40, "id5"], [40, "id15"], [40, "id24"], [40, "id57"], [41, "result"], [41, "id7"], [41, "id16"], [41, "id25"], [41, "id35"], [41, "id44"], [41, "id53"], [42, "result"], [42, "id6"], [42, "id15"], [42, "id24"], [42, "id33"], [42, "id42"], [42, "id51"], [42, "id60"], [42, "id69"], [42, "id78"], [42, "id87"], [42, "id96"], [42, "id105"]], "Examples": [[29, "examples"], [29, "id7"], [29, "id16"], [29, "id25"], [29, "id34"], [29, "id43"], [29, "id52"], [29, "id61"], [29, "id75"], [29, "id88"], [29, "id101"], [29, "id114"], [29, "id123"], [29, "id133"], [29, "id142"], [29, "id151"], [29, "id160"], [29, "id169"], [29, "id178"], [29, "id187"], [29, "id196"], [29, "id205"], [29, "id214"], [30, "examples"], [30, "id7"], [30, "id16"], [30, "id25"], [30, "id34"], [30, "id43"], [30, "id52"], [30, "id61"], [30, "id70"], [30, "id79"], [30, "id88"], [30, "id97"], [30, "id107"], [30, "id116"], [30, "id124"], [30, "id133"], [30, "id142"], [30, "id151"], [30, "id160"], [30, "id169"], [30, "id177"], [30, "id186"], [30, "id195"], [30, "id204"], [30, "id213"], [30, "id222"], [30, "id231"], [30, "id240"], [30, "id249"], [30, "id258"], [30, "id267"], [30, "id276"], [31, "examples"], [31, "id6"], [31, "id14"], [31, "id23"], [31, "id32"], [31, "id41"], [32, "examples"], [32, "id7"], [32, "id16"], [32, "id26"], [32, "id35"], [32, "id44"], [32, "id53"], [32, "id62"], [32, "id71"], [32, "id80"], [32, "id89"], [32, "id98"], [32, "id107"], [32, "id116"], [32, "id125"], [32, "id134"], [32, "id143"], [32, "id152"], [33, "examples"], [33, "id7"], [35, "examples"], [35, "id7"], [35, "id17"], [35, "id27"], [35, "id37"], [35, "id47"], [35, "id57"], [35, "id67"], [35, "id77"], [35, "id87"], [35, "id97"], [35, "id107"], [35, "id116"], [35, "id125"], [35, "id133"], [35, "id142"], [35, "id152"], [35, "id161"], [35, "id170"], [35, "id179"], [35, "id188"], [35, "id197"], [35, "id205"], [35, "id214"], [35, "id223"], [35, "id232"], [35, "id241"], [35, "id251"], [35, "id261"], [35, "id270"], [35, "id280"], [35, "id290"], [35, "id299"], [36, "examples"], [36, "id7"], [36, "id16"], [36, "id33"], [36, "id42"], [36, "id51"], [36, "id60"], [36, "id69"], [36, "id78"], [36, "id87"], [36, "id96"], [36, "id105"], [36, "id114"], [36, "id123"], [36, "id132"], [37, "examples"], [37, "id7"], [37, "id16"], [37, "id25"], [37, "id34"], [37, "id43"], [37, "id52"], [37, "id61"], [37, "id70"], [37, "id79"], [37, "id88"], [37, "id97"], [37, "id106"], [37, "id116"], [37, "id125"], [37, "id134"], [37, "id144"], [37, "id153"], [37, "id162"], [38, "examples"], [38, "id13"], [38, "id21"], [38, "id29"], [38, "id37"], [38, "id53"], [38, "id62"], [38, "id71"], [38, "id80"], [38, "id88"], [38, "id96"], [38, "id104"], [38, "id112"], [38, "id120"], [38, "id129"], [38, "id137"], [38, "id145"], [38, "id153"], [38, "id161"], [38, "id169"], [39, "examples"], [39, "id7"], [39, "id16"], [39, "id25"], [39, "id33"], [39, "id42"], [40, "examples"], [40, "id6"], [40, "id16"], [40, "id25"], [40, "id33"], [40, "id41"], [40, "id49"], [40, "id58"], [41, "examples"], [41, "id8"], [41, "id17"], [41, "id27"], [41, "id36"], [41, "id45"], [41, "id54"], [42, "examples"], [42, "id7"], [42, "id16"], [42, "id25"], [42, "id34"], [42, "id43"], [42, "id52"], [42, "id61"], [42, "id70"], [42, "id79"], [42, "id88"], [42, "id97"], [42, "id106"]], "Standard": [[29, "standard"], [29, "id8"], [29, "id17"], [29, "id26"], [29, "id35"], [29, "id44"], [29, "id53"], [29, "id62"], [29, "id76"], [29, "id89"], [29, "id102"], [29, "id115"], [29, "id124"], [29, "id134"], [29, "id143"], [29, "id152"], [29, "id161"], [29, "id170"], [29, "id179"], [29, "id188"], [29, "id197"], [29, "id206"], [29, "id215"], [30, "standard"], [30, "id8"], [30, "id17"], [30, "id26"], [30, "id35"], [30, "id44"], [30, "id53"], [30, "id62"], [30, "id71"], [30, "id80"], [30, "id89"], [30, "id98"], [30, "id108"], [30, "id117"], [30, "id125"], [30, "id134"], [30, "id143"], [30, "id152"], [30, "id161"], [30, "id170"], [30, "id178"], [30, "id187"], [30, "id196"], [30, "id205"], [30, "id214"], [30, "id223"], [30, "id232"], [30, "id241"], [30, "id250"], [30, "id259"], [30, "id268"], [30, "id277"], [31, "standard"], [31, "id7"], [31, "id15"], [31, "id24"], [31, "id33"], [31, "id42"], [32, "standard"], [32, "id8"], [32, "id17"], [32, "id27"], [32, "id36"], [32, "id45"], [32, "id54"], [32, "id63"], [32, "id72"], [32, "id81"], [32, "id90"], [32, "id99"], [32, "id108"], [32, "id117"], [32, "id126"], [32, "id135"], [32, "id144"], [32, "id153"], [33, "standard"], [33, "id8"], [35, "standard"], [35, "id8"], [35, "id18"], [35, "id28"], [35, "id38"], [35, "id48"], [35, "id58"], [35, "id68"], [35, "id78"], [35, "id88"], [35, "id98"], [35, "id108"], [35, "id117"], [35, "id126"], [35, "id134"], [35, "id143"], [35, "id153"], [35, "id162"], [35, "id171"], [35, "id180"], [35, "id189"], [35, "id198"], [35, "id206"], [35, "id215"], [35, "id224"], [35, "id233"], [35, "id242"], [35, "id252"], [35, "id262"], [35, "id271"], [35, "id281"], [35, "id291"], [35, "id300"], [36, "standard"], [36, "id8"], [36, "id17"], [36, "id25"], [36, "id34"], [36, "id43"], [36, "id52"], [36, "id61"], [36, "id70"], [36, "id79"], [36, "id88"], [36, "id97"], [36, "id106"], [36, "id115"], [36, "id124"], [36, "id133"], [37, "standard"], [37, "id8"], [37, "id17"], [37, "id26"], [37, "id35"], [37, "id44"], [37, "id53"], [37, "id62"], [37, "id71"], [37, "id80"], [37, "id89"], [37, "id98"], [37, "id107"], [37, "id117"], [37, "id126"], [37, "id135"], [37, "id145"], [37, "id154"], [37, "id163"], [38, "standard"], [38, "id6"], [38, "id14"], [38, "id22"], [38, "id30"], [38, "id38"], [38, "id46"], [38, "id54"], [38, "id63"], [38, "id72"], [38, "id81"], [38, "id89"], [38, "id97"], [38, "id105"], [38, "id113"], [38, "id121"], [38, "id130"], [38, "id138"], [38, "id146"], [38, "id154"], [38, "id162"], [38, "id170"], [39, "standard"], [39, "id8"], [39, "id17"], [39, "id26"], [39, "id34"], [39, "id43"], [39, "id50"], [40, "standard"], [40, "id7"], [40, "id17"], [40, "id26"], [40, "id34"], [40, "id42"], [40, "id50"], [40, "id59"], [41, "standard"], [41, "id9"], [41, "id18"], [41, "id28"], [41, "id37"], [41, "id46"], [41, "id55"], [42, "standard"], [42, "id8"], [42, "id17"], [42, "id26"], [42, "id35"], [42, "id44"], [42, "id53"], [42, "id62"], [42, "id71"], [42, "id80"], [42, "id89"], [42, "id98"], [42, "id107"]], "See Also": [[29, "see-also"], [29, "id9"], [29, "id18"], [29, "id27"], [29, "id36"], [29, "id54"], [29, "id77"], [29, "id90"], [29, "id103"], [29, "id116"], [29, "id125"], [29, "id135"], [29, "id153"], [29, "id162"], [29, "id171"], [29, "id180"], [29, "id189"], [29, "id198"], [29, "id207"], [29, "id216"], [30, "see-also"], [30, "id9"], [30, "id18"], [30, "id27"], [30, "id36"], [30, "id45"], [30, "id54"], [30, "id63"], [30, "id72"], [30, "id81"], [30, "id90"], [30, "id99"], [30, "id109"], [30, "id126"], [30, "id135"], [30, "id144"], [30, "id153"], [30, "id162"], [30, "id171"], [30, "id179"], [30, "id188"], [30, "id197"], [30, "id206"], [30, "id215"], [30, "id224"], [30, "id233"], [30, "id242"], [30, "id251"], [30, "id260"], [30, "id269"], [30, "id278"], [31, "see-also"], [31, "id8"], [31, "id16"], [31, "id25"], [31, "id34"], [31, "id43"], [32, "see-also"], [32, "id18"], [32, "id28"], [32, "id37"], [32, "id46"], [32, "id55"], [32, "id64"], [32, "id73"], [32, "id82"], [32, "id91"], [32, "id100"], [32, "id109"], [32, "id118"], [32, "id127"], [32, "id136"], [32, "id145"], [32, "id154"], [33, "see-also"], [33, "id9"], [34, "see-also"], [35, "see-also"], [35, "id9"], [35, "id19"], [35, "id29"], [35, "id39"], [35, "id49"], [35, "id59"], [35, "id69"], [35, "id79"], [35, "id89"], [35, "id99"], [35, "id109"], [35, "id118"], [35, "id127"], [35, "id135"], [35, "id144"], [35, "id190"], [35, "id199"], [35, "id207"], [35, "id216"], [35, "id225"], [35, "id234"], [35, "id272"], [35, "id282"], [35, "id292"], [35, "id301"], [36, "see-also"], [36, "id9"], [36, "id18"], [36, "id26"], [36, "id35"], [36, "id44"], [36, "id53"], [36, "id62"], [36, "id71"], [36, "id80"], [36, "id89"], [36, "id98"], [36, "id107"], [36, "id116"], [36, "id125"], [36, "id134"], [37, "see-also"], [37, "id9"], [37, "id18"], [37, "id27"], [37, "id36"], [37, "id45"], [37, "id54"], [37, "id63"], [37, "id72"], [37, "id81"], [37, "id90"], [37, "id99"], [37, "id118"], [37, "id127"], [37, "id136"], [37, "id146"], [37, "id164"], [38, "see-also"], [38, "id7"], [38, "id15"], [38, "id23"], [38, "id31"], [38, "id39"], [38, "id47"], [38, "id64"], [38, "id73"], [38, "id82"], [38, "id90"], [38, "id98"], [38, "id106"], [38, "id114"], [38, "id122"], [38, "id131"], [38, "id139"], [38, "id147"], [38, "id155"], [38, "id163"], [38, "id171"], [39, "see-also"], [39, "id9"], [39, "id35"], [39, "id51"], [40, "see-also"], [40, "id8"], [40, "id18"], [40, "id27"], [40, "id35"], [40, "id43"], [41, "see-also"], [41, "id10"], [41, "id19"], [41, "id29"], [41, "id47"], [41, "id56"], [42, "see-also"], [42, "id9"], [42, "id18"], [42, "id27"], [42, "id36"], [42, "id63"], [42, "id99"], [42, "id108"]], "pack": [[29, "pack"]], "spread": [[29, "spread"]], "unpack": [[29, "unpack"]], "allocated": [[29, "allocated"]], "is_contiguous": [[29, "is-contiguous"]], "See also": [[29, "id45"], [29, "id63"], [29, "id144"], [30, "id118"], [32, "id9"], [35, "id154"], [35, "id163"], [35, "id172"], [35, "id181"], [35, "id243"], [35, "id253"], [35, "id263"], [37, "id108"], [37, "id155"], [38, "id55"], [39, "id18"], [39, "id27"], [40, "id51"], [40, "id60"], [41, "id38"], [42, "id45"], [42, "id54"], [42, "id72"], [42, "id81"], [42, "id90"]], "lbound": [[29, "lbound"]], "Array inquiry:": [[29, "array-inquiry"], [29, "id64"], [29, "id78"], [29, "id91"], [29, "id104"]], "State Inquiry:": [[29, "state-inquiry"], [29, "id65"], [29, "id79"], [29, "id92"], [29, "id105"]], "Kind Inquiry:": [[29, "kind-inquiry"], [29, "id66"], [29, "id80"], [29, "id93"], [29, "id106"]], "Bit Inquiry:": [[29, "bit-inquiry"], [29, "id67"], [29, "id81"], [29, "id94"], [29, "id107"]], "rank": [[29, "rank"]], "": [[29, "id68"], [32, "id19"], [40, "id9"], [40, "id19"], [40, "id61"]], "shape": [[29, "shape"]], "size": [[29, "size"]], "ubound": [[29, "ubound"]], "maxloc": [[29, "maxloc"]], "minloc": [[29, "minloc"]], "findloc": [[29, "findloc"]], "transpose": [[29, "transpose"]], "all": [[29, "all"]], "any": [[29, "any"]], "count": [[29, "count"]], "maxval": [[29, "maxval"]], "minval": [[29, "minval"]], "product": [[29, "product"]], "sum": [[29, "sum"]], "reshape": [[29, "reshape"]], "Bit-level inquiry and manipulation": [[30, "bit-level-inquiry-and-manipulation"]], "bge": [[30, "bge"]], "Bit Sequence Comparison": [[30, "bit-sequence-comparison"]], "bgt": [[30, "bgt"]], "ble": [[30, "ble"]], "blt": [[30, "blt"]], "bit_size": [[30, "bit-size"]], "btest": [[30, "btest"]], "storage_size": [[30, "storage-size"]], "leadz": [[30, "leadz"]], "popcnt": [[30, "popcnt"]], "poppar": [[30, "poppar"]], "trailz": [[30, "trailz"]], "dshiftl": [[30, "dshiftl"]], "NOTE": [[30, "note"], [30, "id104"]], "dshiftr": [[30, "dshiftr"]], "merge_bits": [[30, "merge-bits"]], "mvbits": [[30, "mvbits"]], "ibits": [[30, "ibits"]], "ibclr": [[30, "ibclr"]], "ibset": [[30, "ibset"]], "maskl": [[30, "maskl"]], "maskr": [[30, "maskr"]], "iparity": [[30, "iparity"]], "iall": [[30, "iall"]], "iand": [[30, "iand"]], "iany": [[30, "iany"]], "ieor": [[30, "ieor"]], "ior": [[30, "ior"]], "not": [[30, "not"]], "ishftc": [[30, "ishftc"]], "ishft": [[30, "ishft"]], "shifta": [[30, "shifta"]], "shiftl": [[30, "shiftl"]], "shiftr": [[30, "shiftr"]], "Procedures for binding to C interfaces": [[31, "procedures-for-binding-to-c-interfaces"]], "c_associated": [[31, "c-associated"]], "c_f_pointer": [[31, "c-f-pointer"]], "c_f_procpointer": [[31, "c-f-procpointer"]], "c_funloc": [[31, "c-funloc"]], "c_loc": [[31, "c-loc"]], "c_sizeof": [[31, "c-sizeof"]], "Basic procedures for manipulating character variables": [[32, "basic-procedures-for-manipulating-character-variables"]], "len": [[32, "len"]], "new_line": [[32, "new-line"]], "repeat": [[32, "repeat"]], "achar": [[32, "achar"]], "Note": [[32, "note"], [38, "note"]], "Resources": [[32, "resources"], [35, "resources"], [35, "id10"], [35, "id20"], [35, "id30"], [35, "id40"], [35, "id50"], [35, "id60"], [35, "id70"], [35, "id80"], [35, "id90"], [35, "id100"], [35, "id119"], [35, "id145"], [35, "id244"], [35, "id254"], [35, "id273"], [37, "resources"], [40, "resources"], [41, "resources"], [41, "id57"]], "char": [[32, "char"]], "iachar": [[32, "iachar"]], "ichar": [[32, "ichar"]], "index": [[32, "index"]], "scan": [[32, "scan"]], "verify": [[32, "verify"]], "Sample program I:": [[32, "sample-program-i"]], "Sample program II:": [[32, "sample-program-ii"]], "Sample program III:": [[32, "sample-program-iii"]], "Sample program IV:": [[32, "sample-program-iv"]], "Sample program V:": [[32, "sample-program-v"]], "lge": [[32, "lge"]], "lgt": [[32, "lgt"]], "lle": [[32, "lle"]], "llt": [[32, "llt"]], "adjustl": [[32, "adjustl"]], "adjustr": [[32, "adjustr"]], "len_trim": [[32, "len-trim"]], "trim": [[32, "trim"]], "Information about compiler and compiler options used for building": [[33, "information-about-compiler-and-compiler-options-used-for-building"]], "compiler_options": [[33, "compiler-options"]], "compiler_version": [[33, "compiler-version"]], "Fortran Intrinsics": [[34, "fortran-intrinsics"]], "Overview": [[34, "overview"]], "Text Content Copyrights": [[34, "text-content-copyrights"]], "General mathematical functions": [[35, "general-mathematical-functions"]], "acos": [[35, "acos"]], "acosh": [[35, "acosh"]], "asin": [[35, "asin"]], "asinh": [[35, "asinh"]], "atan": [[35, "atan"]], "atan2": [[35, "atan2"]], "atanh": [[35, "atanh"]], "cos": [[35, "cos"]], "cosh": [[35, "cosh"]], "sin": [[35, "sin"]], "Extended Example": [[35, "extended-example"]], "Haversine Formula": [[35, "haversine-formula"]], "sinh": [[35, "sinh"]], "tan": [[35, "tan"]], "tanh": [[35, "tanh"]], "random_number": [[35, "random-number"]], "random_seed": [[35, "random-seed"]], "exp": [[35, "exp"]], "log": [[35, "log"]], "log10": [[35, "log10"]], "sqrt": [[35, "sqrt"]], "hypot": [[35, "hypot"]], "bessel_j0": [[35, "bessel-j0"]], "bessel_j1": [[35, "bessel-j1"]], "bessel_jn": [[35, "bessel-jn"]], "bessel_y0": [[35, "bessel-y0"]], "bessel_y1": [[35, "bessel-y1"]], "bessel_yn": [[35, "bessel-yn"]], "erf": [[35, "erf"]], "erfc": [[35, "erfc"]], "erfc_scaled": [[35, "erfc-scaled"]], "NOTE1": [[35, "note1"], [39, "note1"]], "gamma": [[35, "gamma"]], "log_gamma": [[35, "log-gamma"], [35, "id283"]], "norm2": [[35, "norm2"]], "Controlling and querying the current numeric model": [[36, "controlling-and-querying-the-current-numeric-model"]], "exponent": [[36, "exponent"]], "fraction": [[36, "fraction"]], "nearest": [[36, "nearest"]], "rrspacing": [[36, "rrspacing"]], "scale": [[36, "scale"]], "set_exponent": [[36, "set-exponent"]], "spacing": [[36, "spacing"]], "digits": [[36, "digits"]], "epsilon": [[36, "epsilon"]], "huge": [[36, "huge"]], "maxexponent": [[36, "maxexponent"]], "minexponent": [[36, "minexponent"]], "precision": [[36, "precision"]], "radix": [[36, "radix"]], "range": [[36, "range"]], "tiny": [[36, "tiny"]], "Manipulation and properties of numeric values": [[37, "manipulation-and-properties-of-numeric-values"]], "abs": [[37, "abs"]], "aint": [[37, "aint"]], "anint": [[37, "anint"]], "ceiling": [[37, "ceiling"]], "conjg": [[37, "conjg"]], "dim": [[37, "dim"]], "dprod": [[37, "dprod"]], "floor": [[37, "floor"]], "max": [[37, "max"]], "min": [[37, "min"]], "mod": [[37, "mod"]], "modulo": [[37, "modulo"]], "sign": [[37, "sign"]], "cshift": [[37, "cshift"], [37, "id115"], [41, "cshift"], [41, "id1"]], "dot_product": [[37, "dot-product"], [41, "dot-product"]], "eoshift": [[37, "eoshift"], [41, "eoshift"]], "matmul": [[37, "matmul"], [41, "matmul"]], "Numeric Arguments": [[37, "numeric-arguments"], [41, "numeric-arguments"]], "Shape and Rank": [[37, "shape-and-rank"], [41, "shape-and-rank"]], "Values": [[37, "values"], [37, "id143"], [41, "values"], [41, "id26"]], "Logical Arguments": [[37, "logical-arguments"], [41, "logical-arguments"]], "parity": [[37, "parity"], [41, "parity"]], "null": [[37, "null"], [41, "null"]], "Parallel programming using co_arrays and co_indexed arrays": [[38, "parallel-programming-using-co-arrays-and-co-indexed-arrays"]], "co_broadcast": [[38, "co-broadcast"]], "co_lbound": [[38, "co-lbound"]], "co_max": [[38, "co-max"]], "co_min": [[38, "co-min"]], "co_reduce": [[38, "co-reduce"]], "co_sum": [[38, "co-sum"]], "co_ubound": [[38, "co-ubound"]], "event_query": [[38, "event-query"]], "image_index": [[38, "image-index"]], "num_images": [[38, "num-images"]], "this_image": [[38, "this-image"]], "atomic_and": [[38, "atomic-and"]], "atomic_fetch_and": [[38, "atomic-fetch-and"]], "atomic_fetch_or": [[38, "atomic-fetch-or"]], "atomic_fetch_xor": [[38, "atomic-fetch-xor"]], "atomic_or": [[38, "atomic-or"]], "atomic_xor": [[38, "atomic-xor"]], "atomic_add": [[38, "atomic-add"]], "atomic_cas": [[38, "atomic-cas"]], "atomic_define": [[38, "atomic-define"]], "atomic_fetch_add": [[38, "atomic-fetch-add"]], "atomic_ref": [[38, "atomic-ref"]], "General and miscellaneous intrinsics": [[39, "general-and-miscellaneous-intrinsics"]], "associated": [[39, "associated"]], "extends_type_of": [[39, "extends-type-of"]], "NOTE2": [[39, "note2"]], "options": [[39, "id5"]], "is_iostat_end": [[39, "is-iostat-end"]], "is_iostat_eor": [[39, "is-iostat-eor"]], "move_alloc": [[39, "move-alloc"]], "present": [[39, "present"]], "same_type_as": [[39, "same-type-as"]], "Accessing external system information": [[40, "accessing-external-system-information"]], "command_argument_count": [[40, "command-argument-count"]], "get_command": [[40, "get-command"]], "get_command_argument": [[40, "get-command-argument"]], "cpu_time": [[40, "cpu-time"]], "date_and_time": [[40, "date-and-time"]], "system_clock": [[40, "system-clock"]], "execute_command_line": [[40, "execute-command-line"]], "get_environment_variable": [[40, "get-environment-variable"]], "Matrix multiplication, dot product, and array shifts": [[41, "matrix-multiplication-dot-product-and-array-shifts"]], "reduce": [[41, "reduce"]], "Types and kinds": [[42, "types-and-kinds"]], "Fortran Data Types": [[42, "fortran-data-types"]], "Implicit Typing": [[42, "implicit-typing"]], "aimag": [[42, "aimag"]], "cmplx": [[42, "cmplx"]], "cmplx(3) and double precision": [[42, "cmplx-3-and-double-precision"]], "NOTE for I/O": [[42, "note-for-i-o"]], "int": [[42, "int"]], "nint": [[42, "nint"]], "real": [[42, "real"]], "dble": [[42, "dble"]], "transfer": [[42, "transfer"]], "Comments": [[42, "comments"]], "logical": [[42, "logical"]], "kind": [[42, "kind"]], "out_of_range": [[42, "out-of-range"]], "selected_char_kind": [[42, "selected-char-kind"]], "selected_int_kind": [[42, "selected-int-kind"]], "selected_real_kind": [[42, "selected-real-kind"]], "Choosing a compiler": [[43, "choosing-a-compiler"]], "IDEs": [[44, "ides"]], "Setting up your OS": [[45, "setting-up-your-os"]], "Installing GFortran": [[46, "installing-gfortran"]], "Windows": [[46, "windows"]], "Unix-like development on Windows": [[46, "unix-like-development-on-windows"]], "Linux": [[46, "linux"]], "Debian-based (Debian, Ubuntu, Mint, etc\u2026)": [[46, "debian-based-debian-ubuntu-mint-etc"]], "RPM-based (Red Hat Enterprise Linux, CentOS, Fedora, openSUSE)": [[46, "rpm-based-red-hat-enterprise-linux-centos-fedora-opensuse"]], "Arch-based (Arch Linux, EndeavourOS, Manjaro, etc\u2026)": [[46, "arch-based-arch-linux-endeavouros-manjaro-etc"]], "macOS": [[46, "macos"]], "Xcode": [[46, "xcode"]], "Binaries": [[46, "binaries"]], "Homebrew": [[46, "homebrew"]], "Fink": [[46, "fink"]], "MacPorts": [[46, "macports"]], "OpenBSD": [[46, "openbsd"]], "OpenCoarrays": [[46, "opencoarrays"]], "Text Editors": [[47, "text-editors"]], "Configuring VS Code": [[47, "configuring-vs-code"]], "Additional Tools": [[47, "additional-tools"]], "Configuring SublimeText": [[47, "configuring-sublimetext"]], "Configuring Atom": [[47, "configuring-atom"]], "Smart Tips": [[48, "smart-tips"]], "Arrays and strings": [[49, "arrays-and-strings"]], "Array declaration": [[49, "array-declaration"]], "Array slicing": [[49, "array-slicing"]], "Allocatable (dynamic) arrays": [[49, "allocatable-dynamic-arrays"]], "Character strings": [[49, "character-strings"]], "Array of strings": [[49, "array-of-strings"]], "Derived Types": [[50, "derived-types"]], "A quick take on derived types": [[50, "a-quick-take-on-derived-types"]], "Derived types in detail": [[50, "derived-types-in-detail"]], "Options to declare a derived type": [[50, "options-to-declare-a-derived-type"]], "Options to declare members of a derived type": [[50, "options-to-declare-members-of-a-derived-type"]], "Type-bound procedures": [[50, "type-bound-procedures"]], "Hello world": [[51, "hello-world"], [51, "id1"]], "Compiler setup": [[51, "compiler-setup"]], "Quickstart tutorial": [[52, "quickstart-tutorial"]], "Operators and flow control": [[53, "operators-and-flow-control"]], "Logical operators": [[53, "logical-operators"]], "Conditional construct (if)": [[53, "conditional-construct-if"]], "Loop constructs (do)": [[53, "loop-constructs-do"]], "Conditional loop (do while)": [[53, "conditional-loop-do-while"]], "Loop control statements (exit and cycle)": [[53, "loop-control-statements-exit-and-cycle"]], "Nested loop control: tags": [[53, "nested-loop-control-tags"]], "Parallelizable loop (do concurrent)": [[53, "parallelizable-loop-do-concurrent"]], "Organising code structure": [[54, "organising-code-structure"]], "Subroutines": [[54, "subroutines"]], "Functions": [[54, "functions"]], "Modules": [[54, "modules"]], "Variables": [[55, "variables"]], "Declaring variables": [[55, "declaring-variables"]], "Standard input / output": [[55, "standard-input-output"]], "Expressions": [[55, "expressions"]], "Floating-point precision": [[55, "floating-point-precision"]], "News": [[56, "news"]], "J3 February 2020 Meeting": [[57, "j3-february-2020-meeting"]], "Attendance": [[57, "attendance"]], "Proposals Discussed at Plenary": [[57, "proposals-discussed-at-plenary"]], "Monday 2/24": [[57, "monday-2-24"]], "Tuesday 2/25": [[57, "tuesday-2-25"]], "Wednesday 2/26": [[57, "wednesday-2-26"]], "Thursday 2/27": [[57, "thursday-2-27"]], "Friday 2/28": [[57, "friday-2-28"]], "Skipped": [[57, "skipped"]], "More Details": [[57, "more-details"]], "FortranCon 2020": [[58, "fortrancon-2020"]], "Open Source Directions Fortran webinar": [[59, "open-source-directions-fortran-webinar"]], "Fortran newsletter: May 2020": [[60, "fortran-newsletter-may-2020"]], "This website": [[60, "this-website"]], "Standard Library": [[60, "standard-library"]], "Package Manager": [[60, "package-manager"], [61, "package-manager"]], "WG5 Convenor candidates": [[60, "wg5-convenor-candidates"]], "Events": [[60, "events"], [61, "events"], [62, "events"], [63, "events"], [64, "events"], [65, "events"], [66, "events"], [67, "events"], [68, "events"], [69, "events"], [70, "events"], [72, "events"], [74, "events"], [76, "events"], [77, "events"], [78, "events"], [79, "events"], [80, "events"], [81, "events"], [82, "events"], [84, "events"], [85, "events"], [86, "events"], [87, "events"], [88, "events"], [89, "events"]], "Who\u2019s hiring?": [[60, "who-s-hiring"]], "Fortran newsletter: June 2020": [[61, "fortran-newsletter-june-2020"]], "fortran-lang.org": [[61, "fortran-lang-org"], [62, "fortran-lang-org"], [63, "fortran-lang-org"], [64, "fortran-lang-org"], [65, "fortran-lang-org"], [66, "fortran-lang-org"], [67, "fortran-lang-org"], [68, "fortran-lang-org"], [69, "fortran-lang-org"], [70, "fortran-lang-org"], [72, "fortran-lang-org"], [74, "fortran-lang-org"], [76, "fortran-lang-org"], [77, "fortran-lang-org"], [78, "fortran-lang-org"], [79, "fortran-lang-org"], [80, "fortran-lang-org"], [81, "fortran-lang-org"], [82, "fortran-lang-org"], [84, "fortran-lang-org"], [85, "fortran-lang-org"], [86, "fortran-lang-org"], [87, "fortran-lang-org"], [88, "fortran-lang-org"], [89, "fortran-lang-org"]], "Fortran Standard Library": [[61, "fortran-standard-library"], [62, "fortran-standard-library"], [63, "fortran-standard-library"], [64, "fortran-standard-library"], [65, "fortran-standard-library"], [66, "fortran-standard-library"], [67, "fortran-standard-library"], [68, "fortran-standard-library"], [69, "fortran-standard-library"], [70, "fortran-standard-library"], [72, "fortran-standard-library"], [74, "fortran-standard-library"], [76, "fortran-standard-library"], [77, "fortran-standard-library"], [78, "fortran-standard-library"], [79, "fortran-standard-library"], [80, "fortran-standard-library"], [81, "fortran-standard-library"], [82, "fortran-standard-library"], [84, "fortran-standard-library"], [85, "fortran-standard-library"], [86, "fortran-standard-library"], [87, "fortran-standard-library"], [88, "fortran-standard-library"], [89, "fortran-standard-library"], [101, "fortran-standard-library"]], "Contributors": [[61, "contributors"], [62, "contributors"], [63, "contributors"], [64, "contributors"], [65, "contributors"], [66, "contributors"], [67, "contributors"], [68, "contributors"], [69, "contributors"], [70, "contributors"], [72, "contributors"], [74, "contributors"], [76, "contributors"], [77, "contributors"], [78, "contributors"], [79, "contributors"], [80, "contributors"], [81, "contributors"], [82, "contributors"], [84, "contributors"], [85, "contributors"], [86, "contributors"], [87, "contributors"], [88, "contributors"], [89, "contributors"]], "Fortran newsletter: July 2020": [[62, "fortran-newsletter-july-2020"]], "Fortran Package Manager": [[62, "fortran-package-manager"], [63, "fortran-package-manager"], [64, "fortran-package-manager"], [65, "fortran-package-manager"], [66, "fortran-package-manager"], [67, "fortran-package-manager"], [68, "fortran-package-manager"], [69, "fortran-package-manager"], [70, "fortran-package-manager"], [72, "fortran-package-manager"], [74, "fortran-package-manager"], [76, "fortran-package-manager"], [77, "fortran-package-manager"], [78, "fortran-package-manager"], [79, "fortran-package-manager"], [80, "fortran-package-manager"], [81, "fortran-package-manager"], [82, "fortran-package-manager"], [84, "fortran-package-manager"], [85, "fortran-package-manager"], [86, "fortran-package-manager"], [87, "fortran-package-manager"], [88, "fortran-package-manager"], [89, "fortran-package-manager"]], "Fortran newsletter: August 2020": [[63, "fortran-newsletter-august-2020"]], "Fortran benchmarks": [[63, "fortran-benchmarks"], [64, "fortran-benchmarks"]], "Classic Flang": [[63, "classic-flang"], [64, "classic-flang"], [65, "classic-flang"], [66, "classic-flang"], [67, "classic-flang"], [68, "classic-flang"], [69, "classic-flang"], [72, "classic-flang"], [74, "classic-flang"]], "LLVM Flang": [[63, "llvm-flang"], [64, "llvm-flang"], [65, "llvm-flang"], [66, "llvm-flang"], [67, "llvm-flang"], [68, "llvm-flang"], [69, "llvm-flang"], [72, "llvm-flang"], [74, "llvm-flang"]], "LFortran": [[63, "lfortran"], [64, "lfortran"], [65, "lfortran"], [66, "lfortran"], [70, "lfortran"], [72, "lfortran"], [74, "lfortran"], [76, "lfortran"], [77, "lfortran"], [78, "lfortran"], [79, "lfortran"], [80, "lfortran"], [81, "lfortran"], [82, "lfortran"], [83, "lfortran"], [84, "lfortran"], [85, "lfortran"], [86, "lfortran"], [87, "lfortran"], [88, "lfortran"], [89, "lfortran"]], "Fortran newsletter: September 2020": [[64, "fortran-newsletter-september-2020"]], "GFortran": [[64, "gfortran"]], "Fortran newsletter: October 2020": [[65, "fortran-newsletter-october-2020"]], "Fortran newsletter: November 2020": [[66, "fortran-newsletter-november-2020"]], "Fortran newsletter: December 2020": [[67, "fortran-newsletter-december-2020"]], "Fortran newsletter: January 2021": [[68, "fortran-newsletter-january-2021"]], "Fortran newsletter: February 2021": [[69, "fortran-newsletter-february-2021"]], "Fortran newsletter: March 2021": [[70, "fortran-newsletter-march-2021"]], "Fortran-lang accepted to Google Summer of Code 2021": [[71, "fortran-lang-accepted-to-google-summer-of-code-2021"]], "Fortran newsletter: April 2021": [[72, "fortran-newsletter-april-2021"]], "First year of the Fortran website": [[73, "first-year-of-the-fortran-website"]], "Fortran newsletter: May 2021": [[74, "fortran-newsletter-may-2021"]], "Fortran-lang welcomes new students to Google Summer of Code 2021": [[75, "fortran-lang-welcomes-new-students-to-google-summer-of-code-2021"]], "Fortran newsletter: June 2021": [[76, "fortran-newsletter-june-2021"]], "Fortran newsletter: July 2021": [[77, "fortran-newsletter-july-2021"]], "Fortran newsletter: August 2021": [[78, "fortran-newsletter-august-2021"]], "Fortran newsletter: September 2021": [[79, "fortran-newsletter-september-2021"]], "Work in progress": [[79, "work-in-progress"], [79, "id1"], [79, "id2"], [79, "id3"], [80, "work-in-progress"], [80, "id1"], [80, "id2"], [81, "work-in-progress"], [81, "id1"], [81, "id2"], [82, "work-in-progress"], [82, "id1"], [82, "id2"], [84, "work-in-progress"], [84, "id1"], [84, "id2"], [85, "work-in-progress"], [85, "id1"], [85, "id2"], [86, "work-in-progress"], [86, "id1"], [86, "id2"], [87, "work-in-progress"], [87, "id1"], [87, "id2"]], "FFTPACK": [[79, "fftpack"]], "Flang": [[79, "flang"], [80, "flang"], [81, "flang"], [82, "flang"], [84, "flang"], [85, "flang"], [86, "flang"], [87, "flang"], [88, "flang"], [89, "flang"]], "LFortran 0.12.0 was released on August 15": [[79, "lfortran-0-12-0-was-released-on-august-15"]], "Updates in master since the last release:": [[79, "updates-in-master-since-the-last-release"]], "Fortran newsletter: October 2021": [[80, "fortran-newsletter-october-2021"]], "Fortran newsletter: November 2021": [[81, "fortran-newsletter-november-2021"]], "Fortran newsletter: December 2021": [[82, "fortran-newsletter-december-2021"]], "Fortran-lang: 2021 in review": [[83, "fortran-lang-2021-in-review"]], "Standard Library (stdlib)": [[83, "standard-library-stdlib"]], "Fortran Package Manager (fpm)": [[83, "fortran-package-manager-fpm"], [101, "fortran-package-manager-fpm"]], "fortran-lang.org, Discourse, and social media": [[83, "fortran-lang-org-discourse-and-social-media"]], "New projects": [[83, "new-projects"]], "fpm-docs": [[83, "fpm-docs"]], "Google Summer of Code 2021": [[83, "google-summer-of-code-2021"]], "Conferences and papers": [[83, "conferences-and-papers"]], "FortranCon 2021": [[83, "fortrancon-2021"]], "PackagingCon 2021": [[83, "packagingcon-2021"]], "Papers": [[83, "papers"]], "Summary": [[83, "summary"]], "Thanks": [[83, "thanks"]], "Fortran newsletter: January 2022": [[84, "fortran-newsletter-january-2022"]], "Fortran newsletter: February 2022": [[85, "fortran-newsletter-february-2022"]], "Fortran newsletter: March 2022": [[86, "fortran-newsletter-march-2022"]], "Fortran newsletter: April 2022": [[87, "fortran-newsletter-april-2022"]], "Fortran newsletter: May 2022": [[88, "fortran-newsletter-may-2022"]], "Fortran newsletter: June 2022": [[89, "fortran-newsletter-june-2022"]], "Packages": [[90, "packages"]], "Data types and containers": [[90, "data-types-and-containers"]], "Interface libraries": [[90, "interface-libraries"]], "Libraries": [[90, "libraries"]], "Input, output and parsing": [[90, "input-output-and-parsing"]], "Graphics, plotting and user interfaces": [[90, "graphics-plotting-and-user-interfaces"]], "Examples and templates": [[90, "examples-and-templates"]], "Numerical projects": [[90, "numerical-projects"]], "Programming utilities": [[90, "programming-utilities"]], "Characters and strings": [[90, "characters-and-strings"]], "Scientific Codes": [[90, "scientific-codes"]], "Libraries for advanced data types and container classes": [[91, "libraries-for-advanced-data-types-and-container-classes"]], "Demonstration codes and templates for Fortran": [[92, "demonstration-codes-and-templates-for-fortran"]], "Libraries for plotting data, handling images and generating user interfaces": [[93, "libraries-for-plotting-data-handling-images-and-generating-user-interfaces"]], "Libraries that interface with other systems, languages, or devices": [[94, "libraries-that-interface-with-other-systems-languages-or-devices"]], "Libraries for reading, writing and parsing files and inputs": [[95, "libraries-for-reading-writing-and-parsing-files-and-inputs"]], "Fortran libraries for general programming tasks": [[96, "fortran-libraries-for-general-programming-tasks"]], "Fortran libraries for linear algebra, optimization, root-finding etc.": [[97, "fortran-libraries-for-linear-algebra-optimization-root-finding-etc"]], "Error handling, logging, documentation and testing": [[98, "error-handling-logging-documentation-and-testing"]], "Applications and libraries for applied mathematical and scientific problems": [[99, "applications-and-libraries-for-applied-mathematical-and-scientific-problems"]], "Libraries for manipulating characters and strings": [[100, "libraries-for-manipulating-characters-and-strings"]], "Roadmap ": [[101, "roadmap"]], "OS integration: File system": [[101, "os-integration-file-system"]], "OS integration: Subprocesses": [[101, "os-integration-subprocesses"]], "Sparse matrices": [[101, "sparse-matrices"]], "Fortran Registry": [[101, "fortran-registry"]], "Version Constraint Resolution": [[101, "version-constraint-resolution"]], "fpm-ize the Fortran ecosystem": [[101, "fpm-ize-the-fortran-ecosystem"]], "Extended Testing Support": [[101, "extended-testing-support"]], "Source Code Distribution with Foreign Build Systems": [[101, "source-code-distribution-with-foreign-build-systems"]], "Modern Fortran for Visual Studio Code": [[101, "modern-fortran-for-visual-studio-code"]], "Integration with the Fortran Package Manager and CMake": [[101, "integration-with-the-fortran-package-manager-and-cmake"]], "Sphinx Documentation": [[101, "sphinx-documentation"]], "Extension Localizations": [[101, "extension-localizations"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/zh_CN/.doctrees/community.doctree b/zh_CN/.doctrees/community.doctree index b0a971768cf9..8bf059ea2106 100644 Binary files a/zh_CN/.doctrees/community.doctree and b/zh_CN/.doctrees/community.doctree differ diff --git a/zh_CN/.doctrees/community/contributing.doctree b/zh_CN/.doctrees/community/contributing.doctree index 9c25a007207b..3fc26faa91d6 100644 Binary files a/zh_CN/.doctrees/community/contributing.doctree and b/zh_CN/.doctrees/community/contributing.doctree differ diff --git a/zh_CN/.doctrees/community/minibooks.doctree b/zh_CN/.doctrees/community/minibooks.doctree index 379add4d33a8..eff228107636 100644 Binary files a/zh_CN/.doctrees/community/minibooks.doctree and b/zh_CN/.doctrees/community/minibooks.doctree differ diff --git a/zh_CN/.doctrees/community/packages.doctree b/zh_CN/.doctrees/community/packages.doctree index 33ae9bbf2ce8..cedffec126ea 100644 Binary files a/zh_CN/.doctrees/community/packages.doctree and b/zh_CN/.doctrees/community/packages.doctree differ diff --git a/zh_CN/.doctrees/compilers.doctree b/zh_CN/.doctrees/compilers.doctree index a8dd206e1b93..749de704485a 100644 Binary files a/zh_CN/.doctrees/compilers.doctree and b/zh_CN/.doctrees/compilers.doctree differ diff --git a/zh_CN/.doctrees/environment.pickle b/zh_CN/.doctrees/environment.pickle index d6624d734dc8..1ee7f0754340 100644 Binary files a/zh_CN/.doctrees/environment.pickle and b/zh_CN/.doctrees/environment.pickle differ diff --git a/zh_CN/.doctrees/index.doctree b/zh_CN/.doctrees/index.doctree index 6a9cb70629cf..c879dac1c1cc 100644 Binary files a/zh_CN/.doctrees/index.doctree and b/zh_CN/.doctrees/index.doctree differ diff --git a/zh_CN/.doctrees/learn.doctree b/zh_CN/.doctrees/learn.doctree index d6f71b8d21a1..4da08c462e37 100644 Binary files a/zh_CN/.doctrees/learn.doctree and b/zh_CN/.doctrees/learn.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/allocatable_arrays.doctree b/zh_CN/.doctrees/learn/best_practices/allocatable_arrays.doctree index 9b8c360c0c7d..cd0896878f94 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/allocatable_arrays.doctree and b/zh_CN/.doctrees/learn/best_practices/allocatable_arrays.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/arrays.doctree b/zh_CN/.doctrees/learn/best_practices/arrays.doctree index 564b7a2da069..c1d246f5feba 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/arrays.doctree and b/zh_CN/.doctrees/learn/best_practices/arrays.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/element_operations.doctree b/zh_CN/.doctrees/learn/best_practices/element_operations.doctree index 98f74ed8a9c6..9f559b36865d 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/element_operations.doctree and b/zh_CN/.doctrees/learn/best_practices/element_operations.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/file_io.doctree b/zh_CN/.doctrees/learn/best_practices/file_io.doctree index 5c4177c382b1..00271ff9b372 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/file_io.doctree and b/zh_CN/.doctrees/learn/best_practices/file_io.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/floating_point.doctree b/zh_CN/.doctrees/learn/best_practices/floating_point.doctree index b5de8e49bd92..ccf749b35250 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/floating_point.doctree and b/zh_CN/.doctrees/learn/best_practices/floating_point.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/integer_division.doctree b/zh_CN/.doctrees/learn/best_practices/integer_division.doctree index 9ab5525605b6..cfaf6aed7ce2 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/integer_division.doctree and b/zh_CN/.doctrees/learn/best_practices/integer_division.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/modules_programs.doctree b/zh_CN/.doctrees/learn/best_practices/modules_programs.doctree index 21e983c15791..b1d210dd8e12 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/modules_programs.doctree and b/zh_CN/.doctrees/learn/best_practices/modules_programs.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/multidim_arrays.doctree b/zh_CN/.doctrees/learn/best_practices/multidim_arrays.doctree index 94b9ef292321..69ccc1f89b8c 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/multidim_arrays.doctree and b/zh_CN/.doctrees/learn/best_practices/multidim_arrays.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/style_guide.doctree b/zh_CN/.doctrees/learn/best_practices/style_guide.doctree index 1b8835c3f02c..9ca8777bb295 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/style_guide.doctree and b/zh_CN/.doctrees/learn/best_practices/style_guide.doctree differ diff --git a/zh_CN/.doctrees/learn/best_practices/type_casting.doctree b/zh_CN/.doctrees/learn/best_practices/type_casting.doctree index d4a7b6fefded..ce0218f8025a 100644 Binary files a/zh_CN/.doctrees/learn/best_practices/type_casting.doctree and b/zh_CN/.doctrees/learn/best_practices/type_casting.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/build_tools.doctree b/zh_CN/.doctrees/learn/building_programs/build_tools.doctree index e1b58de4610e..e181ec50477d 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/build_tools.doctree and b/zh_CN/.doctrees/learn/building_programs/build_tools.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/compiling_source.doctree b/zh_CN/.doctrees/learn/building_programs/compiling_source.doctree index 3590191ef503..750e4778126a 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/compiling_source.doctree and b/zh_CN/.doctrees/learn/building_programs/compiling_source.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/distributing.doctree b/zh_CN/.doctrees/learn/building_programs/distributing.doctree index 67eff1c79717..a3b89b5938d6 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/distributing.doctree and b/zh_CN/.doctrees/learn/building_programs/distributing.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/include_files.doctree b/zh_CN/.doctrees/learn/building_programs/include_files.doctree index 0fe26d75c8d8..629d6f76b15b 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/include_files.doctree and b/zh_CN/.doctrees/learn/building_programs/include_files.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/linking_pieces.doctree b/zh_CN/.doctrees/learn/building_programs/linking_pieces.doctree index c31ea8ca3c9a..290b6fe19288 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/linking_pieces.doctree and b/zh_CN/.doctrees/learn/building_programs/linking_pieces.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/managing_libraries.doctree b/zh_CN/.doctrees/learn/building_programs/managing_libraries.doctree index 6785d97d79f4..2ef5d96f7349 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/managing_libraries.doctree and b/zh_CN/.doctrees/learn/building_programs/managing_libraries.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/project_make.doctree b/zh_CN/.doctrees/learn/building_programs/project_make.doctree index b45c95d71962..351276e907a4 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/project_make.doctree and b/zh_CN/.doctrees/learn/building_programs/project_make.doctree differ diff --git a/zh_CN/.doctrees/learn/building_programs/runtime_libraries.doctree b/zh_CN/.doctrees/learn/building_programs/runtime_libraries.doctree index 8e84a5c2ddcb..b29ecdd8d246 100644 Binary files a/zh_CN/.doctrees/learn/building_programs/runtime_libraries.doctree and b/zh_CN/.doctrees/learn/building_programs/runtime_libraries.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/array.doctree b/zh_CN/.doctrees/learn/intrinsics/array.doctree index 31bcc04db740..6f48889ee069 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/array.doctree and b/zh_CN/.doctrees/learn/intrinsics/array.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/bit.doctree b/zh_CN/.doctrees/learn/intrinsics/bit.doctree index fdc400de8821..5be7d85e89ff 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/bit.doctree and b/zh_CN/.doctrees/learn/intrinsics/bit.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/cfi.doctree b/zh_CN/.doctrees/learn/intrinsics/cfi.doctree index 7287d0aafb2d..7828b81e1dfa 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/cfi.doctree and b/zh_CN/.doctrees/learn/intrinsics/cfi.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/character.doctree b/zh_CN/.doctrees/learn/intrinsics/character.doctree index 4c8230ce8151..7f6a42c026cb 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/character.doctree and b/zh_CN/.doctrees/learn/intrinsics/character.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/compiler.doctree b/zh_CN/.doctrees/learn/intrinsics/compiler.doctree index 9e068493c00e..e4e78161c316 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/compiler.doctree and b/zh_CN/.doctrees/learn/intrinsics/compiler.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/index.doctree b/zh_CN/.doctrees/learn/intrinsics/index.doctree index e298995b9cbc..87bb5ef9a73d 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/index.doctree and b/zh_CN/.doctrees/learn/intrinsics/index.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/math.doctree b/zh_CN/.doctrees/learn/intrinsics/math.doctree index 6e56a3d48d5a..8337b21b8493 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/math.doctree and b/zh_CN/.doctrees/learn/intrinsics/math.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/model.doctree b/zh_CN/.doctrees/learn/intrinsics/model.doctree index abe60e64e43f..7e549ff26ce0 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/model.doctree and b/zh_CN/.doctrees/learn/intrinsics/model.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/numeric.doctree b/zh_CN/.doctrees/learn/intrinsics/numeric.doctree index 04e3f3132ca9..907d25ce3f33 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/numeric.doctree and b/zh_CN/.doctrees/learn/intrinsics/numeric.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/parallel.doctree b/zh_CN/.doctrees/learn/intrinsics/parallel.doctree index 9b1733c11a33..bd2b848e34a8 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/parallel.doctree and b/zh_CN/.doctrees/learn/intrinsics/parallel.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/state.doctree b/zh_CN/.doctrees/learn/intrinsics/state.doctree index 69b49592fa2e..17a39d3c4908 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/state.doctree and b/zh_CN/.doctrees/learn/intrinsics/state.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/system.doctree b/zh_CN/.doctrees/learn/intrinsics/system.doctree index 52836f2b59a1..215ef3b7fb41 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/system.doctree and b/zh_CN/.doctrees/learn/intrinsics/system.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/transform.doctree b/zh_CN/.doctrees/learn/intrinsics/transform.doctree index 3c6d346b7e1c..483356075d76 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/transform.doctree and b/zh_CN/.doctrees/learn/intrinsics/transform.doctree differ diff --git a/zh_CN/.doctrees/learn/intrinsics/type.doctree b/zh_CN/.doctrees/learn/intrinsics/type.doctree index aefa79d80173..ea39d52060ea 100644 Binary files a/zh_CN/.doctrees/learn/intrinsics/type.doctree and b/zh_CN/.doctrees/learn/intrinsics/type.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/choose_compiler.doctree b/zh_CN/.doctrees/learn/os_setup/choose_compiler.doctree index af96c7c1bd62..f77921d52fe9 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/choose_compiler.doctree and b/zh_CN/.doctrees/learn/os_setup/choose_compiler.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/ides.doctree b/zh_CN/.doctrees/learn/os_setup/ides.doctree index 72890ac79c1c..348c39af432a 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/ides.doctree and b/zh_CN/.doctrees/learn/os_setup/ides.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/index.doctree b/zh_CN/.doctrees/learn/os_setup/index.doctree index 6d0684ee8fa5..39c8bdc81e5e 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/index.doctree and b/zh_CN/.doctrees/learn/os_setup/index.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/install_gfortran.doctree b/zh_CN/.doctrees/learn/os_setup/install_gfortran.doctree index 73caae418828..27cd85412cd6 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/install_gfortran.doctree and b/zh_CN/.doctrees/learn/os_setup/install_gfortran.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/text_editors.doctree b/zh_CN/.doctrees/learn/os_setup/text_editors.doctree index 6547f5b37292..fe5862c7396c 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/text_editors.doctree and b/zh_CN/.doctrees/learn/os_setup/text_editors.doctree differ diff --git a/zh_CN/.doctrees/learn/os_setup/tips.doctree b/zh_CN/.doctrees/learn/os_setup/tips.doctree index 5bd88a2c598b..376a1de3794b 100644 Binary files a/zh_CN/.doctrees/learn/os_setup/tips.doctree and b/zh_CN/.doctrees/learn/os_setup/tips.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/arrays_strings.doctree b/zh_CN/.doctrees/learn/quickstart/arrays_strings.doctree index 0d659ae88e9e..bdfd6d8408fd 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/arrays_strings.doctree and b/zh_CN/.doctrees/learn/quickstart/arrays_strings.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/derived_types.doctree b/zh_CN/.doctrees/learn/quickstart/derived_types.doctree index f5b780667dfc..54470e6538c6 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/derived_types.doctree and b/zh_CN/.doctrees/learn/quickstart/derived_types.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/hello_world.doctree b/zh_CN/.doctrees/learn/quickstart/hello_world.doctree index a5d6d6cc5020..7ef44e74b40b 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/hello_world.doctree and b/zh_CN/.doctrees/learn/quickstart/hello_world.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/index.doctree b/zh_CN/.doctrees/learn/quickstart/index.doctree index f3e63f689262..5de35691e830 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/index.doctree and b/zh_CN/.doctrees/learn/quickstart/index.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/operators_control_flow.doctree b/zh_CN/.doctrees/learn/quickstart/operators_control_flow.doctree index 51bb09b601be..33ff22b40166 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/operators_control_flow.doctree and b/zh_CN/.doctrees/learn/quickstart/operators_control_flow.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/organising_code.doctree b/zh_CN/.doctrees/learn/quickstart/organising_code.doctree index 9e78b6bf1852..af36a65fcbea 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/organising_code.doctree and b/zh_CN/.doctrees/learn/quickstart/organising_code.doctree differ diff --git a/zh_CN/.doctrees/learn/quickstart/variables.doctree b/zh_CN/.doctrees/learn/quickstart/variables.doctree index d9056cfce1f1..a37d491c343b 100644 Binary files a/zh_CN/.doctrees/learn/quickstart/variables.doctree and b/zh_CN/.doctrees/learn/quickstart/variables.doctree differ diff --git a/zh_CN/.doctrees/news/2020/02-28-J3-february-meeting.doctree b/zh_CN/.doctrees/news/2020/02-28-J3-february-meeting.doctree index b8e93950cfcb..ca9948a7dead 100644 Binary files a/zh_CN/.doctrees/news/2020/02-28-J3-february-meeting.doctree and b/zh_CN/.doctrees/news/2020/02-28-J3-february-meeting.doctree differ diff --git a/zh_CN/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree b/zh_CN/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree index 87d6fe740869..606a62c13e48 100644 Binary files a/zh_CN/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree and b/zh_CN/.doctrees/news/2020/04-06-Announcing-FortranCon-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/04-18-Fortran-Webinar.doctree b/zh_CN/.doctrees/news/2020/04-18-Fortran-Webinar.doctree index cdead8c27e13..e90ae84abf3b 100644 Binary files a/zh_CN/.doctrees/news/2020/04-18-Fortran-Webinar.doctree and b/zh_CN/.doctrees/news/2020/04-18-Fortran-Webinar.doctree differ diff --git a/zh_CN/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree b/zh_CN/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree index 884442beeda3..7ddebb9a21a5 100644 Binary files a/zh_CN/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree and b/zh_CN/.doctrees/news/2020/05-01-Fortran-Newsletter-May-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree b/zh_CN/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree index 1d89e518554b..a08aa3fb951e 100644 Binary files a/zh_CN/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree and b/zh_CN/.doctrees/news/2020/06-01-Fortran-Newsletter-June-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree b/zh_CN/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree index 31e36400d3c7..664e238fa395 100644 Binary files a/zh_CN/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree and b/zh_CN/.doctrees/news/2020/07-01-Fortran-Newsletter-July-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree b/zh_CN/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree index 145d49a19c5c..c4271ec7bb93 100644 Binary files a/zh_CN/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree and b/zh_CN/.doctrees/news/2020/08-01-Fortran-Newsletter-August-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree b/zh_CN/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree index fa0236c3a5ec..91aafebf8b70 100644 Binary files a/zh_CN/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree and b/zh_CN/.doctrees/news/2020/09-01-Fortran-Newsletter-September-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree b/zh_CN/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree index f4a107f77020..660563119b9c 100644 Binary files a/zh_CN/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree and b/zh_CN/.doctrees/news/2020/10-01-Fortran-Newsletter-October-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree b/zh_CN/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree index b98cc3a68cac..b5050bfbef18 100644 Binary files a/zh_CN/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree and b/zh_CN/.doctrees/news/2020/11-01-Fortran-Newsletter-November-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree b/zh_CN/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree index 555c9bb59f0e..30ada756c5a1 100644 Binary files a/zh_CN/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree and b/zh_CN/.doctrees/news/2020/12-01-Fortran-Newsletter-December-2020.doctree differ diff --git a/zh_CN/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree b/zh_CN/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree index dd7282e5586c..91d8e7ff5b51 100644 Binary files a/zh_CN/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree and b/zh_CN/.doctrees/news/2021/01-01-Fortran-Newsletter-January-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree b/zh_CN/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree index 548893f6443c..32b960f36c08 100644 Binary files a/zh_CN/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree and b/zh_CN/.doctrees/news/2021/02-01-Fortran-Newsletter-February-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree b/zh_CN/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree index ab272d73bc12..eaaf50a0a7a6 100644 Binary files a/zh_CN/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree and b/zh_CN/.doctrees/news/2021/03-01-Fortran-Newsletter-March-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree b/zh_CN/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree index f86641b4dfc0..734fa232d863 100644 Binary files a/zh_CN/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree and b/zh_CN/.doctrees/news/2021/04-01-Fortran-Newsletter-April-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree b/zh_CN/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree index 5d572cefd447..c05eb3af711a 100644 Binary files a/zh_CN/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree and b/zh_CN/.doctrees/news/2021/05-01-Fortran-Newsletter-May-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree b/zh_CN/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree index b698a57a5ec7..fc0758b4334e 100644 Binary files a/zh_CN/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree and b/zh_CN/.doctrees/news/2021/06-01-Fortran-Newsletter-June-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree b/zh_CN/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree index 883e96a56e55..7fc8092abf92 100644 Binary files a/zh_CN/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree and b/zh_CN/.doctrees/news/2021/07-01-Fortran-Newsletter-July-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree b/zh_CN/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree index fb95b718c066..b63e951648c6 100644 Binary files a/zh_CN/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree and b/zh_CN/.doctrees/news/2021/08-01-Fortran-Newsletter-August-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree b/zh_CN/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree index 9abe53670375..7dcf929f651f 100644 Binary files a/zh_CN/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree and b/zh_CN/.doctrees/news/2021/09-01-Fortran-Newsletter-September-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree b/zh_CN/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree index 2022b7801948..a4ae421313d2 100644 Binary files a/zh_CN/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree and b/zh_CN/.doctrees/news/2021/10-01-Fortran-Newsletter-October-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree b/zh_CN/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree index d2deb5268957..c5bc210053c8 100644 Binary files a/zh_CN/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree and b/zh_CN/.doctrees/news/2021/11-01-Fortran-Newsletter-November-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree b/zh_CN/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree index 9ef990d3875d..191d503cfd2e 100644 Binary files a/zh_CN/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree and b/zh_CN/.doctrees/news/2021/12-01-Fortran-Newsletter-December-2021.doctree differ diff --git a/zh_CN/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree b/zh_CN/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree index f34874fcfa1d..880a20af148d 100644 Binary files a/zh_CN/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree and b/zh_CN/.doctrees/news/2022/01-01-Fortran-Newsletter-January-2022.doctree differ diff --git a/zh_CN/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree b/zh_CN/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree index b1d14900ac2f..fa73a6a4a578 100644 Binary files a/zh_CN/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree and b/zh_CN/.doctrees/news/2022/02-01-Fortran-Newsletter-February-2022.doctree differ diff --git a/zh_CN/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree b/zh_CN/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree index 28c386fe7148..066507d1f5af 100644 Binary files a/zh_CN/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree and b/zh_CN/.doctrees/news/2022/03-09-Fortran-Newsletter-March-2022.doctree differ diff --git a/zh_CN/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree b/zh_CN/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree index 162d51493f23..4f70ec0a5f24 100644 Binary files a/zh_CN/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree and b/zh_CN/.doctrees/news/2022/04-07-Fortran-Newsletter-April-2022.doctree differ diff --git a/zh_CN/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree b/zh_CN/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree index bae20814135d..34ff7e9cae36 100644 Binary files a/zh_CN/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree and b/zh_CN/.doctrees/news/2022/05-05-Fortran-Newsletter-May-2022.doctree differ diff --git a/zh_CN/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree b/zh_CN/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree index 0ab296b2e006..9a74179ce295 100644 Binary files a/zh_CN/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree and b/zh_CN/.doctrees/news/2022/06-09-Fortran-Newsletter-June-2022.doctree differ diff --git a/zh_CN/.doctrees/packages.doctree b/zh_CN/.doctrees/packages.doctree index f9f6ece3137d..0af600d6861c 100644 Binary files a/zh_CN/.doctrees/packages.doctree and b/zh_CN/.doctrees/packages.doctree differ diff --git a/zh_CN/.doctrees/packages/data-types.doctree b/zh_CN/.doctrees/packages/data-types.doctree index 6b5fb60fba03..f1e713fb3e53 100644 Binary files a/zh_CN/.doctrees/packages/data-types.doctree and b/zh_CN/.doctrees/packages/data-types.doctree differ diff --git a/zh_CN/.doctrees/packages/examples.doctree b/zh_CN/.doctrees/packages/examples.doctree index 3a25c63e38a1..2551b0f61cf1 100644 Binary files a/zh_CN/.doctrees/packages/examples.doctree and b/zh_CN/.doctrees/packages/examples.doctree differ diff --git a/zh_CN/.doctrees/packages/graphics.doctree b/zh_CN/.doctrees/packages/graphics.doctree index 5a1b29d438df..e78d05859820 100644 Binary files a/zh_CN/.doctrees/packages/graphics.doctree and b/zh_CN/.doctrees/packages/graphics.doctree differ diff --git a/zh_CN/.doctrees/packages/interfaces.doctree b/zh_CN/.doctrees/packages/interfaces.doctree index 70408c6c9524..177fc8914354 100644 Binary files a/zh_CN/.doctrees/packages/interfaces.doctree and b/zh_CN/.doctrees/packages/interfaces.doctree differ diff --git a/zh_CN/.doctrees/packages/io.doctree b/zh_CN/.doctrees/packages/io.doctree index 38423d81315f..3959c495ea32 100644 Binary files a/zh_CN/.doctrees/packages/io.doctree and b/zh_CN/.doctrees/packages/io.doctree differ diff --git a/zh_CN/.doctrees/packages/libraries.doctree b/zh_CN/.doctrees/packages/libraries.doctree index 96369b42e53a..e548c73710c9 100644 Binary files a/zh_CN/.doctrees/packages/libraries.doctree and b/zh_CN/.doctrees/packages/libraries.doctree differ diff --git a/zh_CN/.doctrees/packages/numerical.doctree b/zh_CN/.doctrees/packages/numerical.doctree index c7d4569fd122..621a4c1ac4c7 100644 Binary files a/zh_CN/.doctrees/packages/numerical.doctree and b/zh_CN/.doctrees/packages/numerical.doctree differ diff --git a/zh_CN/.doctrees/packages/programming.doctree b/zh_CN/.doctrees/packages/programming.doctree index 9e73d3f85a00..8b750894b57c 100644 Binary files a/zh_CN/.doctrees/packages/programming.doctree and b/zh_CN/.doctrees/packages/programming.doctree differ diff --git a/zh_CN/.doctrees/packages/scientific.doctree b/zh_CN/.doctrees/packages/scientific.doctree index fb9b3f8db45b..36b776647192 100644 Binary files a/zh_CN/.doctrees/packages/scientific.doctree and b/zh_CN/.doctrees/packages/scientific.doctree differ diff --git a/zh_CN/.doctrees/packages/strings.doctree b/zh_CN/.doctrees/packages/strings.doctree index ea25534754fd..5fbb74d482ce 100644 Binary files a/zh_CN/.doctrees/packages/strings.doctree and b/zh_CN/.doctrees/packages/strings.doctree differ diff --git a/zh_CN/community/contributing/index.html b/zh_CN/community/contributing/index.html index ddccdef6da03..4ec88be21e02 100644 --- a/zh_CN/community/contributing/index.html +++ b/zh_CN/community/contributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/community/history/index.html b/zh_CN/community/history/index.html index 327921a4dc02..d7f17e134f1f 100644 --- a/zh_CN/community/history/index.html +++ b/zh_CN/community/history/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/community/index.html b/zh_CN/community/index.html index 50d5cd9c58d0..c993822f7e1a 100644 --- a/zh_CN/community/index.html +++ b/zh_CN/community/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/community/minibooks/index.html b/zh_CN/community/minibooks/index.html index 3765b7c6f67b..7a5cb949390f 100644 --- a/zh_CN/community/minibooks/index.html +++ b/zh_CN/community/minibooks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/community/packages/index.html b/zh_CN/community/packages/index.html index dbb8a76b6069..9cf6187c5fc0 100644 --- a/zh_CN/community/packages/index.html +++ b/zh_CN/community/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/compilers/index.html b/zh_CN/compilers/index.html index cb732d7fe1a5..766bb4b87072 100644 --- a/zh_CN/compilers/index.html +++ b/zh_CN/compilers/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/genindex/index.html b/zh_CN/genindex/index.html index 96fab5d94210..08c90b0fa0bf 100644 --- a/zh_CN/genindex/index.html +++ b/zh_CN/genindex/index.html @@ -176,62 +176,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -244,10 +244,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/index.html b/zh_CN/index.html index 2a8d8a7b2393..3ac6c7159839 100644 --- a/zh_CN/index.html +++ b/zh_CN/index.html @@ -191,62 +191,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -259,10 +259,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/allocatable_arrays/index.html b/zh_CN/learn/best_practices/allocatable_arrays/index.html index bee324c220a3..3a7ced13ae60 100644 --- a/zh_CN/learn/best_practices/allocatable_arrays/index.html +++ b/zh_CN/learn/best_practices/allocatable_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/arrays/index.html b/zh_CN/learn/best_practices/arrays/index.html index c2b76f87970a..45511aa8e490 100644 --- a/zh_CN/learn/best_practices/arrays/index.html +++ b/zh_CN/learn/best_practices/arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/callbacks/index.html b/zh_CN/learn/best_practices/callbacks/index.html index 905e9c4f7907..ab68d4230363 100644 --- a/zh_CN/learn/best_practices/callbacks/index.html +++ b/zh_CN/learn/best_practices/callbacks/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/element_operations/index.html b/zh_CN/learn/best_practices/element_operations/index.html index 8773e599dab6..97cf3ca39042 100644 --- a/zh_CN/learn/best_practices/element_operations/index.html +++ b/zh_CN/learn/best_practices/element_operations/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/file_io/index.html b/zh_CN/learn/best_practices/file_io/index.html index 9972698bf418..e9473be1a858 100644 --- a/zh_CN/learn/best_practices/file_io/index.html +++ b/zh_CN/learn/best_practices/file_io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/floating_point/index.html b/zh_CN/learn/best_practices/floating_point/index.html index b2d7aa62cff9..e773d911fe2b 100644 --- a/zh_CN/learn/best_practices/floating_point/index.html +++ b/zh_CN/learn/best_practices/floating_point/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/index.html b/zh_CN/learn/best_practices/index.html index 2da08b9232af..cefb91ed7cd1 100644 --- a/zh_CN/learn/best_practices/index.html +++ b/zh_CN/learn/best_practices/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/integer_division/index.html b/zh_CN/learn/best_practices/integer_division/index.html index a8ca1200c23d..86582761bc35 100644 --- a/zh_CN/learn/best_practices/integer_division/index.html +++ b/zh_CN/learn/best_practices/integer_division/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/modules_programs/index.html b/zh_CN/learn/best_practices/modules_programs/index.html index 70e331ead1c5..225cfbe9351a 100644 --- a/zh_CN/learn/best_practices/modules_programs/index.html +++ b/zh_CN/learn/best_practices/modules_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/multidim_arrays/index.html b/zh_CN/learn/best_practices/multidim_arrays/index.html index 54f5f2c8426d..eeba753e79e8 100644 --- a/zh_CN/learn/best_practices/multidim_arrays/index.html +++ b/zh_CN/learn/best_practices/multidim_arrays/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/style_guide/index.html b/zh_CN/learn/best_practices/style_guide/index.html index a74669b69873..3a82cf166a82 100644 --- a/zh_CN/learn/best_practices/style_guide/index.html +++ b/zh_CN/learn/best_practices/style_guide/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/best_practices/type_casting/index.html b/zh_CN/learn/best_practices/type_casting/index.html index f50faad1386b..39c39edeb9a6 100644 --- a/zh_CN/learn/best_practices/type_casting/index.html +++ b/zh_CN/learn/best_practices/type_casting/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/build_tools/index.html b/zh_CN/learn/building_programs/build_tools/index.html index 7f8e2de7a8fa..c2fc26d17f5b 100644 --- a/zh_CN/learn/building_programs/build_tools/index.html +++ b/zh_CN/learn/building_programs/build_tools/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/compiling_source/index.html b/zh_CN/learn/building_programs/compiling_source/index.html index 09ba6b91bef7..717761dc242e 100644 --- a/zh_CN/learn/building_programs/compiling_source/index.html +++ b/zh_CN/learn/building_programs/compiling_source/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/distributing/index.html b/zh_CN/learn/building_programs/distributing/index.html index cd092c52e85a..3a7bd1ef08a1 100644 --- a/zh_CN/learn/building_programs/distributing/index.html +++ b/zh_CN/learn/building_programs/distributing/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/include_files/index.html b/zh_CN/learn/building_programs/include_files/index.html index 2bc7414acb96..c69b47ae5928 100644 --- a/zh_CN/learn/building_programs/include_files/index.html +++ b/zh_CN/learn/building_programs/include_files/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/index.html b/zh_CN/learn/building_programs/index.html index 02fcccb77dc9..1175514b0873 100644 --- a/zh_CN/learn/building_programs/index.html +++ b/zh_CN/learn/building_programs/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/linking_pieces/index.html b/zh_CN/learn/building_programs/linking_pieces/index.html index ff0ca6533b81..e9dbf0d4b0b1 100644 --- a/zh_CN/learn/building_programs/linking_pieces/index.html +++ b/zh_CN/learn/building_programs/linking_pieces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/managing_libraries/index.html b/zh_CN/learn/building_programs/managing_libraries/index.html index 4d5c209af086..7dc3f89c001d 100644 --- a/zh_CN/learn/building_programs/managing_libraries/index.html +++ b/zh_CN/learn/building_programs/managing_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/project_make/index.html b/zh_CN/learn/building_programs/project_make/index.html index 403ae92dd2c7..26419d31ad91 100644 --- a/zh_CN/learn/building_programs/project_make/index.html +++ b/zh_CN/learn/building_programs/project_make/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/building_programs/runtime_libraries/index.html b/zh_CN/learn/building_programs/runtime_libraries/index.html index 5b7fe58efc0a..a7daaf6634b9 100644 --- a/zh_CN/learn/building_programs/runtime_libraries/index.html +++ b/zh_CN/learn/building_programs/runtime_libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/index.html b/zh_CN/learn/index.html index 112e19659ead..77644923a433 100644 --- a/zh_CN/learn/index.html +++ b/zh_CN/learn/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/array/index.html b/zh_CN/learn/intrinsics/array/index.html index 4f375eaf829f..dd7d4c7f2308 100644 --- a/zh_CN/learn/intrinsics/array/index.html +++ b/zh_CN/learn/intrinsics/array/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/bit/index.html b/zh_CN/learn/intrinsics/bit/index.html index dbc14d6e39aa..46fca969cd6b 100644 --- a/zh_CN/learn/intrinsics/bit/index.html +++ b/zh_CN/learn/intrinsics/bit/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/cfi/index.html b/zh_CN/learn/intrinsics/cfi/index.html index 96b5010e8a6f..5a96de7ebfca 100644 --- a/zh_CN/learn/intrinsics/cfi/index.html +++ b/zh_CN/learn/intrinsics/cfi/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/character/index.html b/zh_CN/learn/intrinsics/character/index.html index 0e7d3c73dbdc..482bf1373c82 100644 --- a/zh_CN/learn/intrinsics/character/index.html +++ b/zh_CN/learn/intrinsics/character/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/compiler/index.html b/zh_CN/learn/intrinsics/compiler/index.html index bbd6fc7ea201..597b0b85de12 100644 --- a/zh_CN/learn/intrinsics/compiler/index.html +++ b/zh_CN/learn/intrinsics/compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/index.html b/zh_CN/learn/intrinsics/index.html index 74af5e832cdc..0fb87679efbf 100644 --- a/zh_CN/learn/intrinsics/index.html +++ b/zh_CN/learn/intrinsics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/math/index.html b/zh_CN/learn/intrinsics/math/index.html index c984b281f560..e0e88e3e4f54 100644 --- a/zh_CN/learn/intrinsics/math/index.html +++ b/zh_CN/learn/intrinsics/math/index.html @@ -194,62 +194,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -262,10 +262,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/model/index.html b/zh_CN/learn/intrinsics/model/index.html index 31cd728032f8..b092d9a83c93 100644 --- a/zh_CN/learn/intrinsics/model/index.html +++ b/zh_CN/learn/intrinsics/model/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/numeric/index.html b/zh_CN/learn/intrinsics/numeric/index.html index 2fc34f0113af..05cad638e427 100644 --- a/zh_CN/learn/intrinsics/numeric/index.html +++ b/zh_CN/learn/intrinsics/numeric/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/parallel/index.html b/zh_CN/learn/intrinsics/parallel/index.html index f4719f28b849..07e0ecefaac4 100644 --- a/zh_CN/learn/intrinsics/parallel/index.html +++ b/zh_CN/learn/intrinsics/parallel/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/state/index.html b/zh_CN/learn/intrinsics/state/index.html index c1397124cb6b..2c5928fa83aa 100644 --- a/zh_CN/learn/intrinsics/state/index.html +++ b/zh_CN/learn/intrinsics/state/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/system/index.html b/zh_CN/learn/intrinsics/system/index.html index f813f0d61175..736d47d66db2 100644 --- a/zh_CN/learn/intrinsics/system/index.html +++ b/zh_CN/learn/intrinsics/system/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/transform/index.html b/zh_CN/learn/intrinsics/transform/index.html index a680fae7a9e1..6a8000ace2f8 100644 --- a/zh_CN/learn/intrinsics/transform/index.html +++ b/zh_CN/learn/intrinsics/transform/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/intrinsics/type/index.html b/zh_CN/learn/intrinsics/type/index.html index 1761eda5c22d..98cf9f25d80b 100644 --- a/zh_CN/learn/intrinsics/type/index.html +++ b/zh_CN/learn/intrinsics/type/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/choose_compiler/index.html b/zh_CN/learn/os_setup/choose_compiler/index.html index 1b3a7886fe2a..15e38f06e55e 100644 --- a/zh_CN/learn/os_setup/choose_compiler/index.html +++ b/zh_CN/learn/os_setup/choose_compiler/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/ides/index.html b/zh_CN/learn/os_setup/ides/index.html index 6b1e0f45528d..4168ae412a3f 100644 --- a/zh_CN/learn/os_setup/ides/index.html +++ b/zh_CN/learn/os_setup/ides/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/index.html b/zh_CN/learn/os_setup/index.html index 37cfc3bab7f9..dd0cb17b642f 100644 --- a/zh_CN/learn/os_setup/index.html +++ b/zh_CN/learn/os_setup/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/install_gfortran/index.html b/zh_CN/learn/os_setup/install_gfortran/index.html index 45ce1be33848..e23b51cb7110 100644 --- a/zh_CN/learn/os_setup/install_gfortran/index.html +++ b/zh_CN/learn/os_setup/install_gfortran/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/text_editors/index.html b/zh_CN/learn/os_setup/text_editors/index.html index d5cfd747540c..7c2be30659c6 100644 --- a/zh_CN/learn/os_setup/text_editors/index.html +++ b/zh_CN/learn/os_setup/text_editors/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/os_setup/tips/index.html b/zh_CN/learn/os_setup/tips/index.html index d8b27f5ad20e..d166d969164a 100644 --- a/zh_CN/learn/os_setup/tips/index.html +++ b/zh_CN/learn/os_setup/tips/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/arrays_strings/index.html b/zh_CN/learn/quickstart/arrays_strings/index.html index d7caad6378a3..4a80930d4883 100644 --- a/zh_CN/learn/quickstart/arrays_strings/index.html +++ b/zh_CN/learn/quickstart/arrays_strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/derived_types/index.html b/zh_CN/learn/quickstart/derived_types/index.html index 81cab0b9568f..269b4d23335c 100644 --- a/zh_CN/learn/quickstart/derived_types/index.html +++ b/zh_CN/learn/quickstart/derived_types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/hello_world/index.html b/zh_CN/learn/quickstart/hello_world/index.html index a6c1efb1bb0d..0d3d44e1df30 100644 --- a/zh_CN/learn/quickstart/hello_world/index.html +++ b/zh_CN/learn/quickstart/hello_world/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/index.html b/zh_CN/learn/quickstart/index.html index bd176bd95946..e78d75764260 100644 --- a/zh_CN/learn/quickstart/index.html +++ b/zh_CN/learn/quickstart/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/operators_control_flow/index.html b/zh_CN/learn/quickstart/operators_control_flow/index.html index b9822fbf5ded..cc1be2c39553 100644 --- a/zh_CN/learn/quickstart/operators_control_flow/index.html +++ b/zh_CN/learn/quickstart/operators_control_flow/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/organising_code/index.html b/zh_CN/learn/quickstart/organising_code/index.html index 26790bfee023..8da22bd68fa5 100644 --- a/zh_CN/learn/quickstart/organising_code/index.html +++ b/zh_CN/learn/quickstart/organising_code/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/learn/quickstart/variables/index.html b/zh_CN/learn/quickstart/variables/index.html index a4e96927c1dd..9d8420626b80 100644 --- a/zh_CN/learn/quickstart/variables/index.html +++ b/zh_CN/learn/quickstart/variables/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2020/02-28-J3-february-meeting/index.html b/zh_CN/news/2020/02-28-J3-february-meeting/index.html index 1f5c88bf9bec..6cfd3862e17c 100644 --- a/zh_CN/news/2020/02-28-J3-february-meeting/index.html +++ b/zh_CN/news/2020/02-28-J3-february-meeting/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2020/04-06-Announcing-FortranCon-2020/index.html b/zh_CN/news/2020/04-06-Announcing-FortranCon-2020/index.html index ac0447626a20..c0109bfeb5c1 100644 --- a/zh_CN/news/2020/04-06-Announcing-FortranCon-2020/index.html +++ b/zh_CN/news/2020/04-06-Announcing-FortranCon-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2020/04-18-Fortran-Webinar/index.html b/zh_CN/news/2020/04-18-Fortran-Webinar/index.html index b5a86341add4..58058c01ddd9 100644 --- a/zh_CN/news/2020/04-18-Fortran-Webinar/index.html +++ b/zh_CN/news/2020/04-18-Fortran-Webinar/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2020/05-01-Fortran-Newsletter-May-2020/index.html b/zh_CN/news/2020/05-01-Fortran-Newsletter-May-2020/index.html index 557f6461665e..801b79ed13b8 100644 --- a/zh_CN/news/2020/05-01-Fortran-Newsletter-May-2020/index.html +++ b/zh_CN/news/2020/05-01-Fortran-Newsletter-May-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2020/06-01-Fortran-Newsletter-June-2020/index.html b/zh_CN/news/2020/06-01-Fortran-Newsletter-June-2020/index.html index df663ae1da25..438dabfdf0d2 100644 --- a/zh_CN/news/2020/06-01-Fortran-Newsletter-June-2020/index.html +++ b/zh_CN/news/2020/06-01-Fortran-Newsletter-June-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/news/2020/07-01-Fortran-Newsletter-July-2020/index.html b/zh_CN/news/2020/07-01-Fortran-Newsletter-July-2020/index.html index 2f43e583ead8..435c0368c46c 100644 --- a/zh_CN/news/2020/07-01-Fortran-Newsletter-July-2020/index.html +++ b/zh_CN/news/2020/07-01-Fortran-Newsletter-July-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward diff --git a/zh_CN/news/2020/08-01-Fortran-Newsletter-August-2020/index.html b/zh_CN/news/2020/08-01-Fortran-Newsletter-August-2020/index.html index b5ba7db5f2c5..479794208efc 100644 --- a/zh_CN/news/2020/08-01-Fortran-Newsletter-August-2020/index.html +++ b/zh_CN/news/2020/08-01-Fortran-Newsletter-August-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz diff --git a/zh_CN/news/2020/09-01-Fortran-Newsletter-September-2020/index.html b/zh_CN/news/2020/09-01-Fortran-Newsletter-September-2020/index.html index 8002cc0da3e2..b925c9c3bbea 100644 --- a/zh_CN/news/2020/09-01-Fortran-Newsletter-September-2020/index.html +++ b/zh_CN/news/2020/09-01-Fortran-Newsletter-September-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,49 +415,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward diff --git a/zh_CN/news/2020/10-01-Fortran-Newsletter-October-2020/index.html b/zh_CN/news/2020/10-01-Fortran-Newsletter-October-2020/index.html index c9757d21e262..ee881af60b6d 100644 --- a/zh_CN/news/2020/10-01-Fortran-Newsletter-October-2020/index.html +++ b/zh_CN/news/2020/10-01-Fortran-Newsletter-October-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward diff --git a/zh_CN/news/2020/11-01-Fortran-Newsletter-November-2020/index.html b/zh_CN/news/2020/11-01-Fortran-Newsletter-November-2020/index.html index e84444c94772..a5388bcf3484 100644 --- a/zh_CN/news/2020/11-01-Fortran-Newsletter-November-2020/index.html +++ b/zh_CN/news/2020/11-01-Fortran-Newsletter-November-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec diff --git a/zh_CN/news/2020/12-01-Fortran-Newsletter-December-2020/index.html b/zh_CN/news/2020/12-01-Fortran-Newsletter-December-2020/index.html index a486387b7c9b..9b8673569d11 100644 --- a/zh_CN/news/2020/12-01-Fortran-Newsletter-December-2020/index.html +++ b/zh_CN/news/2020/12-01-Fortran-Newsletter-December-2020/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic diff --git a/zh_CN/news/2020/index.html b/zh_CN/news/2020/index.html index 0b814adfe414..6c960f983152 100644 --- a/zh_CN/news/2020/index.html +++ b/zh_CN/news/2020/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -598,56 +601,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -705,42 +708,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -798,49 +801,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -905,28 +908,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz @@ -984,21 +987,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward @@ -1056,14 +1059,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/news/2021/01-01-Fortran-Newsletter-January-2021/index.html b/zh_CN/news/2021/01-01-Fortran-Newsletter-January-2021/index.html index 0824a9738e6e..1a20a6c2be24 100644 --- a/zh_CN/news/2021/01-01-Fortran-Newsletter-January-2021/index.html +++ b/zh_CN/news/2021/01-01-Fortran-Newsletter-January-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic diff --git a/zh_CN/news/2021/02-01-Fortran-Newsletter-February-2021/index.html b/zh_CN/news/2021/02-01-Fortran-Newsletter-February-2021/index.html index b807cd5519e8..1fd783801a8e 100644 --- a/zh_CN/news/2021/02-01-Fortran-Newsletter-February-2021/index.html +++ b/zh_CN/news/2021/02-01-Fortran-Newsletter-February-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic diff --git a/zh_CN/news/2021/03-01-Fortran-Newsletter-March-2021/index.html b/zh_CN/news/2021/03-01-Fortran-Newsletter-March-2021/index.html index 23fe1385e3f2..1e313e95ffdc 100644 --- a/zh_CN/news/2021/03-01-Fortran-Newsletter-March-2021/index.html +++ b/zh_CN/news/2021/03-01-Fortran-Newsletter-March-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward diff --git a/zh_CN/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html b/zh_CN/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html index 2130070ccf16..4477b1cc6de8 100644 --- a/zh_CN/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html +++ b/zh_CN/news/2021/03-09-fortran-lang-accepted-for-google-summer-of-code-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,56 +415,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson diff --git a/zh_CN/news/2021/04-01-Fortran-Newsletter-April-2021/index.html b/zh_CN/news/2021/04-01-Fortran-Newsletter-April-2021/index.html index 97eac7120fe1..9481903d8a80 100644 --- a/zh_CN/news/2021/04-01-Fortran-Newsletter-April-2021/index.html +++ b/zh_CN/news/2021/04-01-Fortran-Newsletter-April-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/zh_CN/news/2021/04-20-First-Year/index.html b/zh_CN/news/2021/04-20-First-Year/index.html index e4dcb34869ec..ccf4c86406ab 100644 --- a/zh_CN/news/2021/04-20-First-Year/index.html +++ b/zh_CN/news/2021/04-20-First-Year/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,28 +415,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward diff --git a/zh_CN/news/2021/05-01-Fortran-Newsletter-May-2021/index.html b/zh_CN/news/2021/05-01-Fortran-Newsletter-May-2021/index.html index 49bbb4cb0dcc..ed97dfe3a89e 100644 --- a/zh_CN/news/2021/05-01-Fortran-Newsletter-May-2021/index.html +++ b/zh_CN/news/2021/05-01-Fortran-Newsletter-May-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic diff --git a/zh_CN/news/2021/05-18-Welcome-GSoC-students/index.html b/zh_CN/news/2021/05-18-Welcome-GSoC-students/index.html index 6b91449f7691..fd4c7ad48f6e 100644 --- a/zh_CN/news/2021/05-18-Welcome-GSoC-students/index.html +++ b/zh_CN/news/2021/05-18-Welcome-GSoC-students/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,42 +415,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert diff --git a/zh_CN/news/2021/06-01-Fortran-Newsletter-June-2021/index.html b/zh_CN/news/2021/06-01-Fortran-Newsletter-June-2021/index.html index b4c3960f73b2..1338fd5d0978 100644 --- a/zh_CN/news/2021/06-01-Fortran-Newsletter-June-2021/index.html +++ b/zh_CN/news/2021/06-01-Fortran-Newsletter-June-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -433,7 +436,7 @@

- Ondřej Čertík + Laurence Kedward diff --git a/zh_CN/news/2021/07-01-Fortran-Newsletter-July-2021/index.html b/zh_CN/news/2021/07-01-Fortran-Newsletter-July-2021/index.html index 842f520e4a23..7787062a337b 100644 --- a/zh_CN/news/2021/07-01-Fortran-Newsletter-July-2021/index.html +++ b/zh_CN/news/2021/07-01-Fortran-Newsletter-July-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -440,7 +443,7 @@

- Laurence Kedward + Zachary Moon diff --git a/zh_CN/news/2021/08-01-Fortran-Newsletter-August-2021/index.html b/zh_CN/news/2021/08-01-Fortran-Newsletter-August-2021/index.html index 8eb046b4e933..248207fe3994 100644 --- a/zh_CN/news/2021/08-01-Fortran-Newsletter-August-2021/index.html +++ b/zh_CN/news/2021/08-01-Fortran-Newsletter-August-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , diff --git a/zh_CN/news/2021/09-01-Fortran-Newsletter-September-2021/index.html b/zh_CN/news/2021/09-01-Fortran-Newsletter-September-2021/index.html index 884502d653d5..3b4304f9096b 100644 --- a/zh_CN/news/2021/09-01-Fortran-Newsletter-September-2021/index.html +++ b/zh_CN/news/2021/09-01-Fortran-Newsletter-September-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , diff --git a/zh_CN/news/2021/10-01-Fortran-Newsletter-October-2021/index.html b/zh_CN/news/2021/10-01-Fortran-Newsletter-October-2021/index.html index 39d55d61965f..a486e6387392 100644 --- a/zh_CN/news/2021/10-01-Fortran-Newsletter-October-2021/index.html +++ b/zh_CN/news/2021/10-01-Fortran-Newsletter-October-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,21 +415,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby diff --git a/zh_CN/news/2021/11-01-Fortran-Newsletter-November-2021/index.html b/zh_CN/news/2021/11-01-Fortran-Newsletter-November-2021/index.html index cabe9d8d2cfa..4e1678ac210b 100644 --- a/zh_CN/news/2021/11-01-Fortran-Newsletter-November-2021/index.html +++ b/zh_CN/news/2021/11-01-Fortran-Newsletter-November-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , diff --git a/zh_CN/news/2021/12-01-Fortran-Newsletter-December-2021/index.html b/zh_CN/news/2021/12-01-Fortran-Newsletter-December-2021/index.html index f5c15b86f499..b2a83c3092a7 100644 --- a/zh_CN/news/2021/12-01-Fortran-Newsletter-December-2021/index.html +++ b/zh_CN/news/2021/12-01-Fortran-Newsletter-December-2021/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2021/12-29-Fortran-lang-2021-in-review/index.html b/zh_CN/news/2021/12-29-Fortran-lang-2021-in-review/index.html index e6977265267d..b65d0e44765e 100644 --- a/zh_CN/news/2021/12-29-Fortran-lang-2021-in-review/index.html +++ b/zh_CN/news/2021/12-29-Fortran-lang-2021-in-review/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert diff --git a/zh_CN/news/2021/index.html b/zh_CN/news/2021/index.html index c7a57580c82c..33a4fb5ae9a9 100644 --- a/zh_CN/news/2021/index.html +++ b/zh_CN/news/2021/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,28 +522,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -683,14 +686,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -764,21 +767,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -838,14 +841,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -919,14 +922,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1000,14 +1003,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1021,7 +1024,7 @@

- Laurence Kedward + Zachary Moon @@ -1081,14 +1084,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1102,7 +1105,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1162,42 +1165,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1266,28 +1269,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1347,28 +1350,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1441,28 +1444,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1522,56 +1525,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -1631,21 +1634,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1703,35 +1706,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1789,42 +1792,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic diff --git a/zh_CN/news/2022/01-01-Fortran-Newsletter-January-2022/index.html b/zh_CN/news/2022/01-01-Fortran-Newsletter-January-2022/index.html index 39eba139d54c..cf71ac62bda2 100644 --- a/zh_CN/news/2022/01-01-Fortran-Newsletter-January-2022/index.html +++ b/zh_CN/news/2022/01-01-Fortran-Newsletter-January-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,28 +422,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert diff --git a/zh_CN/news/2022/02-01-Fortran-Newsletter-February-2022/index.html b/zh_CN/news/2022/02-01-Fortran-Newsletter-February-2022/index.html index f541322b91b1..3a2b686e540d 100644 --- a/zh_CN/news/2022/02-01-Fortran-Newsletter-February-2022/index.html +++ b/zh_CN/news/2022/02-01-Fortran-Newsletter-February-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,35 +415,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh diff --git a/zh_CN/news/2022/03-09-Fortran-Newsletter-March-2022/index.html b/zh_CN/news/2022/03-09-Fortran-Newsletter-March-2022/index.html index 9ca6fe6e5fe7..7bd2d5ce97e9 100644 --- a/zh_CN/news/2022/03-09-Fortran-Newsletter-March-2022/index.html +++ b/zh_CN/news/2022/03-09-Fortran-Newsletter-March-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , diff --git a/zh_CN/news/2022/04-07-Fortran-Newsletter-April-2022/index.html b/zh_CN/news/2022/04-07-Fortran-Newsletter-April-2022/index.html index 01634ad7f2f5..3bfff01b3c4c 100644 --- a/zh_CN/news/2022/04-07-Fortran-Newsletter-April-2022/index.html +++ b/zh_CN/news/2022/04-07-Fortran-Newsletter-April-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/2022/05-05-Fortran-Newsletter-May-2022/index.html b/zh_CN/news/2022/05-05-Fortran-Newsletter-May-2022/index.html index 9b1d9bf58c3e..5d8007b9d26a 100644 --- a/zh_CN/news/2022/05-05-Fortran-Newsletter-May-2022/index.html +++ b/zh_CN/news/2022/05-05-Fortran-Newsletter-May-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -419,14 +422,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , diff --git a/zh_CN/news/2022/06-09-Fortran-Newsletter-June-2022/index.html b/zh_CN/news/2022/06-09-Fortran-Newsletter-June-2022/index.html index d853aae4fd04..302303be81ed 100644 --- a/zh_CN/news/2022/06-09-Fortran-Newsletter-June-2022/index.html +++ b/zh_CN/news/2022/06-09-Fortran-Newsletter-June-2022/index.html @@ -190,62 +190,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -258,10 +258,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -412,14 +415,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , diff --git a/zh_CN/news/2022/index.html b/zh_CN/news/2022/index.html index 40cb326edeae..1004597ddb54 100644 --- a/zh_CN/news/2022/index.html +++ b/zh_CN/news/2022/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -600,14 +603,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -741,14 +744,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -910,28 +913,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert diff --git a/zh_CN/news/archive/index.html b/zh_CN/news/archive/index.html index 1f8263b82c82..77c53f504e58 100644 --- a/zh_CN/news/archive/index.html +++ b/zh_CN/news/archive/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/atom.xml b/zh_CN/news/atom.xml index a66f104f9bbc..8d4d2c63946d 100644 --- a/zh_CN/news/atom.xml +++ b/zh_CN/news/atom.xml @@ -2,7 +2,7 @@ https://fortran-lang.org/en/ Blog - 2023-05-20T00:18:47.746955+00:00 + 2023-05-22T09:25:08.553829+00:00 ABlog @@ -91,7 +91,7 @@ Fortran news from the previous month.Here’s what’s new in the fortran-lang.o Fortran newsletter: February 2022 2022-02-01T00:00:00+00:00 - Jérémie Vandenplas + Gagandeep Singh <div class="ablog-post-excerpt docutils container"> <p>Welcome to the February 2022 edition of the monthly Fortran newsletter. @@ -111,7 +111,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran newsletter: January 2022 2022-01-01T00:00:00+00:00 - Jérémie Vandenplas + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>Happy New Year and welcome to the January 2022 edition of the monthly Fortran @@ -133,7 +133,7 @@ Fortran news from the previous month.Here’s what’s new and ongoing in the fo Fortran-lang: 2021 in review 2021-12-29T00:00:00+00:00 - Jérémie Vandenplas + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>=(Fortran-lang-2021-in-review)</p> @@ -211,7 +211,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 Fortran newsletter: October 2021 2021-10-01T00:00:00+00:00 - Ondřej Čertík + Alexis Perry-Holby <div class="ablog-post-excerpt docutils container"> <p>Welcome to the October 2021 edition of the monthly Fortran newsletter. @@ -271,7 +271,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 Fortran newsletter: July 2021 2021-07-01T00:00:00+00:00 - Laurence Kedward + Zachary Moon <div class="ablog-post-excerpt docutils container"> <p>Welcome to the July 2021 edition of the monthly Fortran newsletter. @@ -291,7 +291,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 Fortran newsletter: June 2021 2021-06-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>Welcome to the June 2021 edition of the monthly Fortran newsletter. @@ -311,7 +311,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 Fortran-lang welcomes new students to Google Summer of Code 2021 2021-05-18T00:00:00+00:00 - Laurence Kedward + Sebastian Ehlert <div class="ablog-post-excerpt docutils container"> <p>We’re happy to announce six students that will work on Fortran projects under @@ -335,7 +335,7 @@ Milan Curcic. Fortran newsletter: May 2021 2021-05-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the May 2021 edition of the monthly Fortran newsletter. @@ -355,7 +355,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 First year of the Fortran website 2021-04-20T00:00:00+00:00 - Brad Richardson + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>In April 2020 we created a website for the Fortran language at @@ -387,7 +387,7 @@ stewards of the language and we welcome you to join us. Fortran newsletter: April 2021 2021-04-01T00:00:00+00:00 - Alexis Perry-Holby + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>Welcome to the April 2021 edition of the monthly Fortran newsletter. @@ -407,7 +407,7 @@ Fortran news from the previous month.本月我们对网站进行了几次更新 Fortran-lang accepted to Google Summer of Code 2021 2021-03-09T00:00:00+00:00 - Laurence Kedward + Damian Rouson <div class="ablog-post-excerpt docutils container"> <p>We are excited to announce that Fortran-lang has been accepted as a <a class="reference external" href="https://summerofcode.withgoogle.com/organizations/6633903353233408">Google Summer of Code (GSoC) 2021 mentoring organization</a>! 🎉</p> @@ -427,7 +427,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2021 年 3 月 2021-03-01T00:00:00+00:00 - Ondřej Čertík + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2021 年 3 月版的 Fortran 月度时事通讯。该时事通讯在每个月初发布,详细介绍上个月的 Fortran 新闻。</p> @@ -443,7 +443,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2021 年 2 月 2021-02-01T00:00:00+00:00 - Jérémie Vandenplas + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2021 年 2 月版的每月 Fortran 通讯。时事通讯在每个月初发布,详细介绍上个月的 Fortran 新闻。</p> @@ -459,7 +459,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2021 年 1 月 2021-01-01T00:00:00+00:00 - Jérémie Vandenplas + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>新年快乐!欢迎阅读 2021 年 1 月版的每月 Fortran 通讯。时事通讯在每个月初发布,详细介绍上个月的 Fortran 新闻。</p> @@ -475,7 +475,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 12 月 2020-12-01T00:00:00+00:00 - Jérémie Vandenplas + Milan Curcic <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 12 月版的每月 Fortran 通讯。时事通讯在每个月初发布,详细介绍上个月的 Fortran 新闻。</p> @@ -491,7 +491,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 11 月 2020-11-01T00:00:00+00:00 - Jeremie Vandenplas + Ivan Pribec <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 11 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。</p> @@ -507,7 +507,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 10 月 2020-10-01T00:00:00+00:00 - Jérémie Vandenplas + and Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 10 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。</p> @@ -523,7 +523,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 9 月 2020-09-01T00:00:00+00:00 - Jérémie Vandenplas + and Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 9 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。</p> @@ -539,7 +539,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 8 月 2020-08-01T00:00:00+00:00 - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 8 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。</p> @@ -555,7 +555,7 @@ and if you have any ideas that are not mentioned, please let us know. Fortran 通讯:2020 年 7 月 2020-07-01T00:00:00+00:00 - and Jérémie Vandenplas + Laurence Kedward <div class="ablog-post-excerpt docutils container"> <p>欢迎阅读 2020 年 7 月版的每月 Fortran 通讯。时事通讯在每个月的第一个日历日发布,详细介绍上个月的 Fortran 新闻。</p> diff --git a/zh_CN/news/author/alexis-perry-holby/index.html b/zh_CN/news/author/alexis-perry-holby/index.html index 9bcb9a7376f7..cd7b1e531676 100644 --- a/zh_CN/news/author/alexis-perry-holby/index.html +++ b/zh_CN/news/author/alexis-perry-holby/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -600,14 +603,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -741,14 +744,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -910,28 +913,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -1066,14 +1069,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1147,21 +1150,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1221,14 +1224,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1309,28 +1312,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1397,28 +1400,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1478,35 +1481,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic diff --git a/zh_CN/news/author/and-jeremie-vandenplas/index.html b/zh_CN/news/author/and-jeremie-vandenplas/index.html index cfbe73358031..4e653e2789bd 100644 --- a/zh_CN/news/author/and-jeremie-vandenplas/index.html +++ b/zh_CN/news/author/and-jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,21 +515,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward diff --git a/zh_CN/news/author/and-laurence-kedward/index.html b/zh_CN/news/author/and-laurence-kedward/index.html index f09574270046..adc3b62b137b 100644 --- a/zh_CN/news/author/and-laurence-kedward/index.html +++ b/zh_CN/news/author/and-laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -605,49 +608,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward diff --git a/zh_CN/news/author/arjen-markus-and-gary-klimowicz/index.html b/zh_CN/news/author/arjen-markus-and-gary-klimowicz/index.html index 60de1eb02e26..aeb2a68faca3 100644 --- a/zh_CN/news/author/arjen-markus-and-gary-klimowicz/index.html +++ b/zh_CN/news/author/arjen-markus-and-gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,28 +522,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz diff --git a/zh_CN/news/author/arjen-markus/index.html b/zh_CN/news/author/arjen-markus/index.html index 6e607699f8c1..aac81b20fe98 100644 --- a/zh_CN/news/author/arjen-markus/index.html +++ b/zh_CN/news/author/arjen-markus/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -609,56 +612,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson diff --git a/zh_CN/news/author/brad-richardson/index.html b/zh_CN/news/author/brad-richardson/index.html index d350b2226273..1b13ad54ff2e 100644 --- a/zh_CN/news/author/brad-richardson/index.html +++ b/zh_CN/news/author/brad-richardson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -609,28 +612,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -696,56 +699,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -805,56 +808,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -912,42 +915,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -1005,49 +1008,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -1105,14 +1108,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/news/author/damian-rouson/index.html b/zh_CN/news/author/damian-rouson/index.html index a2aa351c8e96..3948e8acc2e0 100644 --- a/zh_CN/news/author/damian-rouson/index.html +++ b/zh_CN/news/author/damian-rouson/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson diff --git a/zh_CN/news/author/gagandeep-singh/index.html b/zh_CN/news/author/gagandeep-singh/index.html index 6e8f20ac1456..0d3f40bda7fb 100644 --- a/zh_CN/news/author/gagandeep-singh/index.html +++ b/zh_CN/news/author/gagandeep-singh/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -593,35 +596,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh diff --git a/zh_CN/news/author/gary-klimowicz/index.html b/zh_CN/news/author/gary-klimowicz/index.html index 30aff4dea58d..dcff3ce61552 100644 --- a/zh_CN/news/author/gary-klimowicz/index.html +++ b/zh_CN/news/author/gary-klimowicz/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,42 +515,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -605,35 +608,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -691,56 +694,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -798,42 +801,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -891,49 +894,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward diff --git a/zh_CN/news/author/giannis-nikiteas/index.html b/zh_CN/news/author/giannis-nikiteas/index.html index 44cd8603c373..347cec161929 100644 --- a/zh_CN/news/author/giannis-nikiteas/index.html +++ b/zh_CN/news/author/giannis-nikiteas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , diff --git a/zh_CN/news/author/henil-panchal/index.html b/zh_CN/news/author/henil-panchal/index.html index 329b15b92744..5d8e2dca8304 100644 --- a/zh_CN/news/author/henil-panchal/index.html +++ b/zh_CN/news/author/henil-panchal/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , diff --git a/zh_CN/news/author/index.html b/zh_CN/news/author/index.html index 4c2216ab6c68..4a8a606bca49 100644 --- a/zh_CN/news/author/index.html +++ b/zh_CN/news/author/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/author/ivan-pribec/index.html b/zh_CN/news/author/ivan-pribec/index.html index dce1e164a821..2ae21d8a400a 100644 --- a/zh_CN/news/author/ivan-pribec/index.html +++ b/zh_CN/news/author/ivan-pribec/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec diff --git a/zh_CN/news/author/jeremie-vandenplas/index.html b/zh_CN/news/author/jeremie-vandenplas/index.html index 9cae6a961e07..ef7feae2811a 100644 --- a/zh_CN/news/author/jeremie-vandenplas/index.html +++ b/zh_CN/news/author/jeremie-vandenplas/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -607,28 +610,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -696,28 +699,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -786,35 +789,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -872,42 +875,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -965,35 +968,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -1051,42 +1054,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -1144,49 +1147,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -1251,28 +1254,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz diff --git a/zh_CN/news/author/laurence-kedward/index.html b/zh_CN/news/author/laurence-kedward/index.html index 5f39b71f58f5..1e18bc3119f3 100644 --- a/zh_CN/news/author/laurence-kedward/index.html +++ b/zh_CN/news/author/laurence-kedward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,28 +522,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -609,21 +612,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -683,14 +686,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -764,14 +767,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -785,7 +788,7 @@

- Laurence Kedward + Zachary Moon @@ -845,14 +848,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -866,7 +869,7 @@

- Ondřej Čertík + Laurence Kedward @@ -926,42 +929,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1030,28 +1033,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1111,28 +1114,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1205,28 +1208,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1286,56 +1289,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -1395,21 +1398,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1467,35 +1470,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1553,42 +1556,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1646,35 +1649,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -1732,56 +1735,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -1846,28 +1849,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz @@ -1925,21 +1928,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward diff --git a/zh_CN/news/author/marshall-ward/index.html b/zh_CN/news/author/marshall-ward/index.html index 73ca714407b5..87f720ff7867 100644 --- a/zh_CN/news/author/marshall-ward/index.html +++ b/zh_CN/news/author/marshall-ward/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,56 +515,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson diff --git a/zh_CN/news/author/milan-curcic-and-ondrej-certik/index.html b/zh_CN/news/author/milan-curcic-and-ondrej-certik/index.html index d29d6eadf244..150ce42cb143 100644 --- a/zh_CN/news/author/milan-curcic-and-ondrej-certik/index.html +++ b/zh_CN/news/author/milan-curcic-and-ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/news/author/milan-curcic/index.html b/zh_CN/news/author/milan-curcic/index.html index 00d7a88b47b1..66f979e49a44 100644 --- a/zh_CN/news/author/milan-curcic/index.html +++ b/zh_CN/news/author/milan-curcic/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -600,14 +603,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -741,14 +744,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -910,28 +913,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -999,28 +1002,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -1163,14 +1166,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1244,14 +1247,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1325,14 +1328,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1406,14 +1409,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1427,7 +1430,7 @@

- Laurence Kedward + Zachary Moon @@ -1487,14 +1490,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1508,7 +1511,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1568,42 +1571,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1672,28 +1675,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1753,28 +1756,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1847,28 +1850,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1928,56 +1931,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -2037,21 +2040,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -2109,35 +2112,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2195,42 +2198,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2288,35 +2291,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -2374,56 +2377,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -2481,42 +2484,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2574,49 +2577,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2681,28 +2684,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz @@ -2760,21 +2763,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward diff --git a/zh_CN/news/author/ondrej-certik-and-zach-jibben/index.html b/zh_CN/news/author/ondrej-certik-and-zach-jibben/index.html index 840f7d9c9661..b4d24c9280ad 100644 --- a/zh_CN/news/author/ondrej-certik-and-zach-jibben/index.html +++ b/zh_CN/news/author/ondrej-certik-and-zach-jibben/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/author/ondrej-certik/index.html b/zh_CN/news/author/ondrej-certik/index.html index 5f58df756bcf..a9fc38623ecd 100644 --- a/zh_CN/news/author/ondrej-certik/index.html +++ b/zh_CN/news/author/ondrej-certik/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -593,14 +596,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -674,28 +677,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -763,28 +766,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -853,14 +856,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -934,21 +937,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1008,14 +1011,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1089,14 +1092,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1170,14 +1173,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1191,7 +1194,7 @@

- Laurence Kedward + Zachary Moon @@ -1251,14 +1254,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1272,7 +1275,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1332,42 +1335,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1436,28 +1439,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1517,28 +1520,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1611,28 +1614,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1692,56 +1695,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -1801,21 +1804,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -1873,42 +1876,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1966,35 +1969,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -2052,56 +2055,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -2159,42 +2162,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2252,49 +2255,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2359,28 +2362,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz diff --git a/zh_CN/news/author/sebastian-ehlert/index.html b/zh_CN/news/author/sebastian-ehlert/index.html index 49721d5d2751..ab172baae59c 100644 --- a/zh_CN/news/author/sebastian-ehlert/index.html +++ b/zh_CN/news/author/sebastian-ehlert/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,35 +515,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -607,28 +610,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -696,28 +699,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -860,14 +863,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -941,14 +944,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1029,14 +1032,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1050,7 +1053,7 @@

- Laurence Kedward + Zachary Moon @@ -1110,14 +1113,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1131,7 +1134,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1191,42 +1194,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1295,28 +1298,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1383,28 +1386,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1464,56 +1467,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -1573,35 +1576,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1659,42 +1662,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -1752,56 +1755,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec diff --git a/zh_CN/news/author/thomas-konig/index.html b/zh_CN/news/author/thomas-konig/index.html index f0f242d6061a..e499624ed247 100644 --- a/zh_CN/news/author/thomas-konig/index.html +++ b/zh_CN/news/author/thomas-konig/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,49 +515,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward diff --git a/zh_CN/news/author/zachary-moon/index.html b/zh_CN/news/author/zachary-moon/index.html index 7e0373694da4..28ea6e65ce5f 100644 --- a/zh_CN/news/author/zachary-moon/index.html +++ b/zh_CN/news/author/zachary-moon/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -519,14 +522,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -540,7 +543,7 @@

- Laurence Kedward + Zachary Moon diff --git a/zh_CN/news/category/index.html b/zh_CN/news/category/index.html index b1ef5613d845..5ad09b2e95ce 100644 --- a/zh_CN/news/category/index.html +++ b/zh_CN/news/category/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/category/newsletter/index.html b/zh_CN/news/category/newsletter/index.html index 00e5de01a10a..f99f894d14ff 100644 --- a/zh_CN/news/category/newsletter/index.html +++ b/zh_CN/news/category/newsletter/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -600,14 +603,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -741,14 +744,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -910,28 +913,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -999,28 +1002,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -1163,14 +1166,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1244,21 +1247,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1318,14 +1321,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1399,14 +1402,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1480,14 +1483,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1501,7 +1504,7 @@

- Laurence Kedward + Zachary Moon @@ -1561,14 +1564,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1582,7 +1585,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1642,42 +1645,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1746,28 +1749,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1827,28 +1830,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1921,28 +1924,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -2002,56 +2005,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -2111,21 +2114,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -2183,35 +2186,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2269,42 +2272,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2362,35 +2365,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -2448,56 +2451,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -2555,42 +2558,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2648,49 +2651,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2755,28 +2758,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz @@ -2834,21 +2837,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward @@ -2906,14 +2909,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/news/drafts/index.html b/zh_CN/news/drafts/index.html index 1bba3c9bfea5..1d82b44d5c48 100644 --- a/zh_CN/news/drafts/index.html +++ b/zh_CN/news/drafts/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/news/index.html b/zh_CN/news/index.html index cb4e3ca34ad5..8e95fef8c908 100644 --- a/zh_CN/news/index.html +++ b/zh_CN/news/index.html @@ -189,62 +189,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -257,10 +257,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. @@ -512,14 +515,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -600,14 +603,14 @@

- Gagandeep Singh + Giannis Nikiteas , - Giannis Nikiteas + Gagandeep Singh , @@ -741,14 +744,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -815,35 +818,35 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Gagandeep Singh + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Gagandeep Singh @@ -910,28 +913,28 @@

- Sebastian Ehlert + Alexis Perry-Holby , - Milan Curcic + Jérémie Vandenplas , - Alexis Perry-Holby + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -999,28 +1002,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Sebastian Ehlert @@ -1163,14 +1166,14 @@

- Ondřej Čertík + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1244,21 +1247,21 @@

- Laurence Kedward + Ondřej Čertík , - Alexis Perry-Holby + Laurence Kedward , - Ondřej Čertík + Alexis Perry-Holby @@ -1318,14 +1321,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1399,14 +1402,14 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , @@ -1480,14 +1483,14 @@

- Sebastian Ehlert + Laurence Kedward , - Zachary Moon + Sebastian Ehlert , @@ -1501,7 +1504,7 @@

- Laurence Kedward + Zachary Moon @@ -1561,14 +1564,14 @@

- Laurence Kedward + Sebastian Ehlert , - Sebastian Ehlert + Ondřej Čertík , @@ -1582,7 +1585,7 @@

- Ondřej Čertík + Laurence Kedward @@ -1642,42 +1645,42 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Arjen Markus , - Milan Curcic + Laurence Kedward , - Arjen Markus + Milan Curcic , - Laurence Kedward + Sebastian Ehlert @@ -1746,28 +1749,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -1827,28 +1830,28 @@

- Ondřej Čertík + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Laurence Kedward + Brad Richardson , - Brad Richardson + Laurence Kedward @@ -1921,28 +1924,28 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Sebastian Ehlert , - Alexis Perry-Holby + Milan Curcic @@ -2002,56 +2005,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Damian Rouson + Arjen Markus , - Marshall Ward + Laurence Kedward , - Brad Richardson + Milan Curcic , - Milan Curcic + Sebastian Ehlert , - Arjen Markus + Marshall Ward , - Laurence Kedward + Damian Rouson @@ -2111,21 +2114,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + Ondřej Čertík , - Ondřej Čertík + Laurence Kedward @@ -2183,35 +2186,35 @@

- Sebastian Ehlert + Laurence Kedward , - Milan Curcic + Alexis Perry-Holby , - Laurence Kedward + Jérémie Vandenplas , - Alexis Perry-Holby + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2269,42 +2272,42 @@

- Ondřej Čertík + Gary Klimowicz , - Sebastian Ehlert + Ondřej Čertík , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Sebastian Ehlert , - Jérémie Vandenplas + Milan Curcic @@ -2362,35 +2365,35 @@

- Ondřej Čertík + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Laurence Kedward , - Laurence Kedward + Jérémie Vandenplas , - Jérémie Vandenplas + Milan Curcic @@ -2448,56 +2451,56 @@

- Ondřej Čertík + Brad Richardson , - Sebastian Ehlert + Ondřej Čertík , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Laurence Kedward , - Gary Klimowicz + Milan Curcic , - Ivan Pribec + Sebastian Ehlert , - Laurence Kedward + Jeremie Vandenplas , - Jeremie Vandenplas + Ivan Pribec @@ -2555,42 +2558,42 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Milan Curcic + Ondřej Čertík , - Gary Klimowicz + Jérémie Vandenplas , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2648,49 +2651,49 @@

- Ondřej Čertík + Brad Richardson , - Brad Richardson + Gary Klimowicz , - Thomas König + Ondřej Čertík , - Milan Curcic + Jérémie Vandenplas , - Gary Klimowicz + Thomas König , - and Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + and Laurence Kedward @@ -2755,28 +2758,28 @@

- Milan Curcic + Laurence Kedward , - Arjen Markus and Gary Klimowicz + Jérémie Vandenplas , - Laurence Kedward + Milan Curcic , - Jérémie Vandenplas + Arjen Markus and Gary Klimowicz @@ -2834,21 +2837,21 @@

- Laurence Kedward + Milan Curcic , - Milan Curcic + and Jérémie Vandenplas , - and Jérémie Vandenplas + Laurence Kedward @@ -2906,14 +2909,14 @@

- Milan Curcic and Ondřej Čertík + Jeremie Vandenplas , - Jeremie Vandenplas + Milan Curcic and Ondřej Čertík , diff --git a/zh_CN/packages/data-types/index.html b/zh_CN/packages/data-types/index.html index f124e57ad280..3457bd32b166 100644 --- a/zh_CN/packages/data-types/index.html +++ b/zh_CN/packages/data-types/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/examples/index.html b/zh_CN/packages/examples/index.html index 3d087bfa916a..94494d231e8c 100644 --- a/zh_CN/packages/examples/index.html +++ b/zh_CN/packages/examples/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/graphics/index.html b/zh_CN/packages/graphics/index.html index 8915f01b6374..d3ee3889798d 100644 --- a/zh_CN/packages/graphics/index.html +++ b/zh_CN/packages/graphics/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/index.html b/zh_CN/packages/index.html index 1b4f5d9705e7..a0c69f5c4c58 100644 --- a/zh_CN/packages/index.html +++ b/zh_CN/packages/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/interfaces/index.html b/zh_CN/packages/interfaces/index.html index 69b2295fa04f..8f65aee92c93 100644 --- a/zh_CN/packages/interfaces/index.html +++ b/zh_CN/packages/interfaces/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/io/index.html b/zh_CN/packages/io/index.html index 42ca486deb2c..1ea3614744e3 100644 --- a/zh_CN/packages/io/index.html +++ b/zh_CN/packages/io/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/libraries/index.html b/zh_CN/packages/libraries/index.html index 485d93b0c481..e184a1ec4a22 100644 --- a/zh_CN/packages/libraries/index.html +++ b/zh_CN/packages/libraries/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/numerical/index.html b/zh_CN/packages/numerical/index.html index 527fa04a4ff3..31d0b7831c52 100644 --- a/zh_CN/packages/numerical/index.html +++ b/zh_CN/packages/numerical/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/programming/index.html b/zh_CN/packages/programming/index.html index 0443a9123575..28d414bd09af 100644 --- a/zh_CN/packages/programming/index.html +++ b/zh_CN/packages/programming/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/scientific/index.html b/zh_CN/packages/scientific/index.html index 8d14a75e98b8..5a479c83081e 100644 --- a/zh_CN/packages/scientific/index.html +++ b/zh_CN/packages/scientific/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/packages/strings/index.html b/zh_CN/packages/strings/index.html index ce77ee16516e..ec53f3b49c68 100644 --- a/zh_CN/packages/strings/index.html +++ b/zh_CN/packages/strings/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/roadmap/index.html b/zh_CN/roadmap/index.html index 6fe60068aa95..4310caed17ab 100644 --- a/zh_CN/roadmap/index.html +++ b/zh_CN/roadmap/index.html @@ -192,62 +192,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -260,10 +260,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs. diff --git a/zh_CN/search/index.html b/zh_CN/search/index.html index 014f7f5c7ab3..9af106d98622 100644 --- a/zh_CN/search/index.html +++ b/zh_CN/search/index.html @@ -182,62 +182,62 @@

{ name: "English", version: "en", - url: "../en/", + url: "", }, { name: "bn", version: "bn", - url: "../bn/", + url: "bn/", }, { name: "cs", version: "cs", - url: "../cs/", + url: "cs/", }, { name: "Deutsch", version: "de", - url: "../de/", + url: "de/", }, { name: "Español", version: "es", - url: "../es/", + url: "es/", }, { name: "Français", version: "fr", - url: "../fr/", + url: "fr/", }, { name: "ja", version: "ja", - url: "../ja/", + url: "ja/", }, { name: "Nederlands", version: "nl", - url: "../nl/", + url: "nl/", }, { name: "pl", version: "pl", - url: "../pl/", + url: "pl/", }, { name: "Português", version: "pt", - url: "../pt/", + url: "pt/", }, { name: "Русский", version: "ru", - url: "../ru/", + url: "ru/", }, { name: "简体中文", version: "zh_CN", - url: "../zh_CN/", + url: "zh_CN/", }, ]; // console.log(data); @@ -250,10 +250,13 @@

const node = document.createElement("a"); node.setAttribute("class", "list-group-item list-group-item-action py-1"); node.textContent = `${entry.name}`; + + node.setAttribute( "href", - `${indexFilePath}${entry.url}${currentFilePath}`, + `https://fortran-lang.org/${entry.url}${currentFilePath}`, ); + // on click, AJAX calls will check if the linked page exists before // trying to redirect, and if not, will redirect to the homepage // for that version of the docs.