Merge: Added `copy_from` service to `NativeString`
[nit.git] / lib / linux / linux.nit
index 04a0c5d..6b89eb8 100644 (file)
@@ -20,6 +20,12 @@ module linux
 import app
 
 redef class App
+       # Path to the expected location of the asset folder of this program
+       #
+       # The asset folder should be located relative to the executable at `../assets/`.
+       # This value can be redefined to change the expected location.
+       var assets_dir: String = sys.program_name.dirname / "../assets/" is lazy
+
        redef fun setup
        do
                super
@@ -40,3 +46,19 @@ redef class App
                on_destroy
        end
 end
+
+redef class TextAsset
+       redef fun load
+       do
+               var path = app.assets_dir / path
+               var reader = path.to_path.open_ro
+               var content = reader.read_all
+               reader.close
+
+               var error = reader.last_error
+               if error != null then self.error = error
+
+               self.to_s = content
+               return content
+       end
+end