In this chapter we will learn about using many source code files in the same project.
Source Code File Sections¶
Each source code file may contains the next sections (in the same order).
Source Code File Sections
Statements and Global Variables
Packages and Classes
The application maybe one or more of files.
Using Many Source Code Files¶
To include another source file in the project, just use the load command.
The Load command is executed directly by the compiler in the parsing stage
if you don’t know the file name until the runtime, or you need to use functions to get the file path, just use eval().
# File : Start.ring Load "sub.ring" sayhello("Mahmoud")
# File : sub.ring func sayhello cName see "Hello " + cName + nl
Using the ‘load’ command we can use many ring source files in the same project
But all of these files will share the same global scope
We have also the “Load Package” command
Using “Load Package” we can load a library (*.ring file) in new global scope
This is very useful to create libraries that avoid conflicts in global variables
x = 100 ? "Hello, World!" load package "testloadpackage.ring" ? x test()
? "Hello from testloadpackage.ring" x = 1000 test() func test ? x
Hello, World! Hello from testloadpackage.ring 1000 100 1000
Ring 1.12 comes with the Load Again command
Using this command we can load the Ring source file which contains constants more than one time.
This is useful when using Ring source files for translations through global constants.
The next function is part from a project which support Arabic and English languages
The files english.ring and arabic.ring contains constants for translation
One of these files is loaded in the start of the program
Loading the same file again using the (Load) command is not possible
Because the (Load) command load the same source file only for the first time and ignore next times.
So we have to use the (Load Again) command.
Where we can use these files again during the runtime as in the next code
func setLang nLanguage if C_ENV_DEFAULT_LANG = nLanguage return ok C_ENV_DEFAULT_LANG = nLanguage # Change the language switch nLanguage on C_TRANSLATION_ENGLISH load again "translation/english.ring" on C_TRANSLATION_ARABIC load again "translation/arabic.ring" off