public final class Source.LiteralBuilder extends Source.SourceBuilder
For examples on how to use it.
Modifier and Type | Method and Description |
---|---|
Source |
build()
Uses configuration of this builder to create new
Source object. |
Source.LiteralBuilder |
cached(boolean cached)
Enables or disables code caching for this source.
|
Source.LiteralBuilder |
canonicalizePath(boolean canonicalize)
Whether the
Source.getPath() (from the TruffleFile ) should be
canonicalized. |
Source.LiteralBuilder |
content(ByteSequence bytes)
Specifies byte based content of
to-be-built Source . |
Source.LiteralBuilder |
content(CharSequence characters)
Specifies character based content of
to-be-built Source . |
Source.LiteralBuilder |
encoding(Charset encoding)
Explicitly assigns an encoding used to read the file content.
|
Source.LiteralBuilder |
interactive(boolean enabled)
Marks the source as interactive.
|
Source.LiteralBuilder |
internal(boolean enabled)
Marks the source as internal.
|
Source.LiteralBuilder |
mimeType(String newMimeType)
|
Source.LiteralBuilder |
name(String newName)
Specifies a name to the
to-be-built Source . |
Source.LiteralBuilder |
uri(URI ownUri)
|
public Source.LiteralBuilder content(CharSequence characters)
to-be-built
Source
. Using
this method one can ignore the real content of a file or URL and use already read one, or
completely different one. Use Source.CONTENT_NONE
to set no content,
Source.hasCharacters()
will be false
then. The given characters must
not mutate after they were accessed for the first time. Example:
URL
resource = relativeClass.getResource("sample.js");Source
source =Source
.newBuilder("js", resource) .content("{}") .build(); assert resource.toExternalForm().equals(source.getPath()); assert "sample.js".equals(source.getName()); assert resource.toExternalForm().equals(source.getURI().toString()); assert "{}".equals(source.getCharacters());
content
in class Source.SourceBuilder
characters
- the code to be available via Source.getCharacters()
, or
Source.CONTENT_NONE
Source.SourceBuilder.build()
method no longer throws an
IOException
public Source.LiteralBuilder content(ByteSequence bytes)
to-be-built
Source
. Using this
method one can ignore the real content of a file or URL and use already read one, or
completely different one. The given bytes must not mutate after they were accessed for
the first time. Example:
URL
resource = relativeClass.getResource("sample.js");Source
source =Source
.newBuilder("js", resource) .content("{}") .build(); assert resource.toExternalForm().equals(source.getPath()); assert "sample.js".equals(source.getName()); assert resource.toExternalForm().equals(source.getURI().toString()); assert "{}".equals(source.getCharacters());
content
in class Source.SourceBuilder
bytes
- the code to be available via Source.getBytes()
Source.SourceBuilder.build()
method no longer throws an
IOException
public Source.LiteralBuilder name(String newName)
to-be-built
Source
.name
in class Source.SourceBuilder
newName
- name that replaces the previously given one. If set to null
then "Unnamed"
will be used.this
builderpublic Source.LiteralBuilder mimeType(String newMimeType)
MIME type
to the to-be-built
Source
. If the MIME type is null
then the
default MIME type
of the language will be used to
interpret the source. If set explicitly then the language needs to
support
the MIME type in order to
parse
a
source. If not null
then the MIME type will be verified containing no spaces
and a '/' between group and sub-group. An example for a valid MIME type is:
text/javascript
.
The MIME type can be guessed by the system based on files
or urls
.
mimeType
in class Source.SourceBuilder
newMimeType
- the new mime type to be assigned, or null
if default MIME
type should be used.this
builder ready to create new source
LanguageInfo.getDefaultMimeType()
,
LanguageInfo.getMimeTypes()
,
Source.findMimeType(TruffleFile)
,
Source.findMimeType(URL)
public Source.LiteralBuilder cached(boolean cached)
true
then the source does not require parsing every time this source is
evaluated. If false
then the source requires parsing every time the source
is evaluated but does not remember any code. Disabling caching may be useful if the
source is known to only be evaluated once.
If a source instance is no longer referenced by the client then all code caches will be freed automatically. Also, if the underlying context or engine is no longer referenced then cached code for evaluated sources will be freed automatically.
cached
in class Source.SourceBuilder
this
builder ready to create new source
public Source.LiteralBuilder internal(boolean enabled)
Source.isInternal()
internal
in class Source.SourceBuilder
public Source.LiteralBuilder interactive(boolean enabled)
interactive
language
can use the environment
streams to print the result and read an input. However, non-interactive languages are
expected to ignore the interactive property of sources and not use the environment
streams. Any desired printing of the evaluated result provided by a non-interactive
language needs to be handled by the caller. Calling of this method influences the result
of Source.isInteractive()
.interactive
in class Source.SourceBuilder
public Source.LiteralBuilder uri(URI ownUri)
URI
to the to-be-created
Source
. Each source
provides Source.getURI()
as a persistent identification of its location. A
default value for the method is deduced from the location or content, but one can change
it by using this methoduri
in class Source.SourceBuilder
ownUri
- the URL to use instead of default one, cannot be null
public Source.LiteralBuilder canonicalizePath(boolean canonicalize)
Source.getPath()
(from the TruffleFile
) should be
canonicalized. By default the path is canonicalized to improve Source caching. If set to
false
, then Source.getPath()
will be the same as the passed TruffleFile
TruffleFile.getPath()
.canonicalizePath
in class Source.SourceBuilder
canonicalize
- whether to canonicalize the path from the the TruffleFilepublic Source.LiteralBuilder encoding(Charset encoding)
null
then the file contained encoding information is used. If the file doesn't
provide an encoding information the default UTF-8
encoding is used.encoding
in class Source.SourceBuilder
encoding
- the new file encoding to be used for reading the contentthis
builder ready to create new source
public Source build()
Source
object.build
in class Source.SourceBuilder
SecurityException
- if the used filesystem
denied file reading