diff --git a/doc/docs.md b/doc/docs.md index bbfe49dd3f..c937422e81 100644 --- a/doc/docs.md +++ b/doc/docs.md @@ -3558,12 +3558,10 @@ Full list of builtin options: #### $embed_file ```v ignore -module main +import os fn main() { embedded_file := $embed_file('v.png') - mut fw := os.create('exported.png') or { panic(err.msg) } - fw.write_bytes(embedded_file.data(), embedded_file.len) - fw.close() + os.write_file('exported.png', embedded_file.to_string()) ? } ``` diff --git a/vlib/v/embed_file/embed_file.v b/vlib/v/embed_file/embed_file.v index b598e90f85..c7695cd100 100644 --- a/vlib/v/embed_file/embed_file.v +++ b/vlib/v/embed_file/embed_file.v @@ -36,6 +36,22 @@ pub fn (mut ed EmbedFileData) free() { } } +pub fn (original &EmbedFileData) to_string() string { + unsafe { + mut ed := &EmbedFileData(original) + the_copy := memdup(ed.data(), ed.len) + return byteptr(the_copy).vstring_with_len(ed.len) + } +} + +pub fn (original &EmbedFileData) to_bytes() []byte { + unsafe { + mut ed := &EmbedFileData(original) + the_copy := memdup(ed.data(), ed.len) + return the_copy.vbytes(ed.len) + } +} + pub fn (mut ed EmbedFileData) data() byteptr { if !isnil(ed.uncompressed) { return ed.uncompressed