Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432417
rendering.md
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
rendering.md
View Options
Rendering
==========
**
_From
version
1.2_
**
To
render
an
AST
generated
by
Peast
you
need
to
create
an
instance
of
the
**
Renderer
**
class
and
associate
a
**
Formatter
**
to
it
:
```
php
$
source
=
"var a;"
;
//Generate the AST
$
ast
=
Peast
\
Peast
::
latest
($
source
,
$
options
)->
parse
();
//Create the renderer
$
renderer
=
new
Peast
\
Renderer
;
//Associate the formatter
$
renderer
->
setFormatter
(
new
Peast
\
Formatter
\
PrettyPrint
);
//Render the AST
echo
$
renderer
->
render
($
ast
);
//"var a;"
```
Formatters
-------------
A
Formatter
specifies
how
the
Renderer
must
format
the
nodes
to
produce
the
output
.
Peast
implements
3
formatters
:
**
PrettyPrint
**,
**
Compact
**
and
**
Expanded
**.
For
example
using
this
source
code
:
```
js
if
(
fn
(
param
))
alert
(
"Ok"
);
else
alert
(
"Fail"
);
```
#####
PrettyPrint
Produces
a
well
formatted
version
of
the
code
.
```
js
if
(
fn
(
param
))
{
alert
(
"Ok"
);
}
else
{
alert
(
"Fail"
);
}
```
#####
Compact
Produces
a
compact
version
of
the
code
by
removing
whitespaces
and
optional
brackets
.
```
js
if
(
fn
(
param
))
alert
(
"Ok"
);
else
alert
(
"Fail"
);
```
#####
Expanded
An
expanded
version
of
PrettyPrint
.
```
js
if
(
fn
(
param
)
)
{
alert
(
"Ok"
);
}
else
{
alert
(
"Fail"
);
}
```
Custom
Formatter
-------------
Peast
allows
you
to
create
your
own
formatter
.
You
can
do
it
by
creating
a
class
that
extends
`
Peast
\
Formatter
\
Base
`
class
and
overwriting
its
protected
properties
:
```
php
class
MyFormatter
extends
Peast
\
Formatter
\
Base
{
//Use Windows style line endings
protected
$
newLine
=
"\r\n"
;
}
$
renderer
=
new
Peast
\
Renderer
;
$
renderer
->
setFormatter
(
new
MyFormatter
);
echo
$
renderer
->
render
($
ast
);
```
Available
properties
are
:
*
`
$
newLine
`
:
line
separator
string
(
default
:
`
"\n"
`
)
*
`
$
indentation
`
:
indentation
string
(
default
:
`
"\t"
`
)
*
`
$
newLineBeforeCurlyBracket
`
:
if
true
,
open
curly
brackets
of
code
blocks
will
be
put
on
a
new
line
(
default
:
`
false
`
)
*
`
$
alwaysWrapBlocks
`
:
if
true
,
curly
brackets
around
code
blocks
will
always
be
inserted
,
also
when
they
are
optional
(
default
:
`
true
`
)
*
`
$
spacesAroundOperators
`
:
if
true
,
a
space
will
be
inserted
before
and
after
operators
(
default
:
`
true
`
)
*
`
$
spacesInsideRoundBrackets
`
:
if
true
,
content
inside
round
brackets
will
be
surrounded
by
spaces
(
default
:
`
false
`
)
Shortcut
method
-------------
Every
syntax
node
has
its
own
`
render
`
method
that
you
can
use
as
a
shortcut
.
For
example
:
```
php
$
ast
=
Peast
\
Peast
::
latest
($
source
,
$
options
)->
parse
();
$
ast
->
render
(
new
Peast
\
Formatter
\
PrettyPrint
);
//Equivalent to
$
ast
=
Peast
\
Peast
::
latest
($
source
,
$
options
)->
parse
();
$
renderer
=
new
Peast
\
Renderer
;
$
renderer
->
setFormatter
(
new
Peast
\
Formatter
\
PrettyPrint
);
$
renderer
->
render
($
ast
);
```
Comments
rendering
-------------
**
_From
version
1.14_
**
Comments
can
be
rendered
by
passing
`
true
`
to
the
formatter
constructor
:
```
php
$
ast
=
Peast
\
Peast
::
latest
($
source
,
array
(
"comments"
=>
true
))->
parse
();
$
ast
->
render
(
new
Peast
\
Formatter
\
PrettyPrint
(
true
));
```
Note
that
comments
can
be
rendered
only
when
parser
is
enabled
to
collect
them
,
to
do
this
you
must
set
the
`
comments
`
option
to
`
true
`
.
Also
note
that
only
PrettyPrint
and
Expanded
formatters
allow
comments
rendering
,
while
Compact
does
not
allow
it
by
default
.
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, May 16, 21:44 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
3f/01/eccb1b7e5058f7159834d4804bda
Default Alt Text
rendering.md (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment