Can I use the ZPM client like a standalone the same way it works when using the %Installer manifest? Bu that I mean, just calling the ZPM to parse the manifest and install it without relying on the registry and the CLI for now, because all the code I want to import is already local, I just need to create a web application that uses the DispatchClass property.

I might have to check the IRIS version, because my Caché 2018 doesn't have any traces of the DispatchClass configuration.

Method CSPApplication(
pUrl As %String,
pNamespace As %String,
pDescription As %String,
pDirectory As %String,
pResource As %String,
pRecurse As %String,
pLoginClass As %String,
pGrant As %String,
pCookiePath As %String,
pAuthMethods As %Integer,
pLockCSPName As %Boolean,
pEventClass As %String,
pDefaultTimeout As %Integer,
pDefaultSuperclass As %String,
pUseSessionCookie As %Integer,
pServeFiles As %Boolean,
pServeFilesTimeout As %Integer,
pCustomErrorPage As %String,
pPackageName As %String,
pChangePasswordPage As %String,
pGroupById As %String = "",
pCspZenEnabled As %Boolean = 1,
pInboundWebServicesEnabled As %Boolean = 1,
pTwoFactorEnabled As %Boolean = 0,
pIsNameSpaceDefault As %Boolean = 0,
pPermittedClasses As %String = "",
pAutoCompile As %Boolean = 1) [ Internal ]

Sorry for taking so long to reply, here's the result from one line:

DEV2>Zw line
line=$c(9,9,9)_"title: 'Erro de aplicação',"

DEV2>zzdump line

0000: 09 09 09 74 69 74 6C 65 3A 20 27 45 72 72 6F 20         ...title: 'Erro
0010: 64 65 20 61 70 6C 69 63 61 C3 A7 C3 A3 6F 27 2C         de aplicação'

Just so you know, my Caché terminal is configured to output using UTF-8 already.

To read the hex I think the zzdump command should suffice?

We're not using Notepad, but Visual Studio Code and Notepad++ because both support changing the current encoding to test the results.

What do you mean by reading from Caché with utf8? If I understood well, we also did the test with "utf-8" being provided instead of "latin1", but when passing utf-8 it broke our encoding, which is weird, because we expected this to happen with "latin1" instead. 

Looks like there's a pvaoref property that points to the original instance as you can see below:

Method %OnNew(oref As %Library.DynamicAbstractObject) As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]
{
    set i%pointer = -1
    set ..pvaoref = oref
    return $$$OK
}

And it seems to work:

USER>set a = []

USER>set it = a.%GetIterator()

USER>w it.pvaoref
1@%Library.DynamicArray
USER>

Check for the following methods:

FindInFiles and FindInFilesRegex.

Optionally you could limit the search for a single project using the method FindInProject.

All methods belong to the %Studio.Project class.

Here's how Atelier does:

            Set tSC=##class(%Studio.Project).FindInFiles(
                tSearch,
                doclist,
                system,
                wholeword,
                casesensitive,
                max,
                "GENERATED="_generated, // filter
                wildcards
            )

But you'll need to use device redirection to capture and parse its content. Because Studio uses these methods to display the results in the Output window.

Hello Raj,

I'm fine with Studio, but... what are the chances of:

  • Native Studio support for Linux and macOS.
  • Default studio editor support for up-to-date language syntaxes like recent ECMAScript revisions.
  • API allowing access to ObjectScript AST, parser and lexer as well. (this might be out-of-context for this discussion, but still it could help the community creating transpilable languages).
    ​​​​​​​* Integrated and full featured terminal with support for special characters including colors.
  • Improved debug support for jobs or simply multiple job debugging (this would make it easier to debug HTTP requests).
  • Studio editor API that allows users to add new language syntaxes, like JSX, TypeScript, Flow, etc.

?