Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
yaml-cpp
Commits
c1966ba3
Commit
c1966ba3
authored
Jun 30, 2008
by
Jesse Beder
Browse files
Renamed the stream member functions get() and eat().
parent
852e5b63
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
143 additions
and
73 deletions
+143
-73
exp.cpp
exp.cpp
+3
-3
scanner.cpp
scanner.cpp
+3
-3
scanner.h
scanner.h
+0
-1
scanscalar.cpp
scanscalar.cpp
+6
-6
scantoken.cpp
scantoken.cpp
+23
-23
stream.cpp
stream.cpp
+8
-8
stream.h
stream.h
+4
-4
test.yaml
test.yaml
+96
-25
No files found.
exp.cpp
View file @
c1966ba3
...
@@ -39,7 +39,7 @@ namespace YAML
...
@@ -39,7 +39,7 @@ namespace YAML
// grab string
// grab string
std
::
string
str
;
std
::
string
str
;
for
(
int
i
=
0
;
i
<
codeLength
;
i
++
)
for
(
int
i
=
0
;
i
<
codeLength
;
i
++
)
str
+=
in
.
G
et
Char
();
str
+=
in
.
g
et
();
// get the value
// get the value
unsigned
value
=
ParseHex
(
str
);
unsigned
value
=
ParseHex
(
str
);
...
@@ -67,10 +67,10 @@ namespace YAML
...
@@ -67,10 +67,10 @@ namespace YAML
std
::
string
Escape
(
Stream
&
in
)
std
::
string
Escape
(
Stream
&
in
)
{
{
// eat slash
// eat slash
char
escape
=
in
.
G
et
Char
();
char
escape
=
in
.
g
et
();
// switch on escape character
// switch on escape character
char
ch
=
in
.
G
et
Char
();
char
ch
=
in
.
g
et
();
// first do single quote, since it's easier
// first do single quote, since it's easier
if
(
escape
==
'\''
&&
ch
==
'\''
)
if
(
escape
==
'\''
&&
ch
==
'\''
)
...
...
scanner.cpp
View file @
c1966ba3
...
@@ -153,13 +153,13 @@ namespace YAML
...
@@ -153,13 +153,13 @@ namespace YAML
while
(
1
)
{
while
(
1
)
{
// first eat whitespace
// first eat whitespace
while
(
IsWhitespaceToBeEaten
(
INPUT
.
peek
()))
while
(
IsWhitespaceToBeEaten
(
INPUT
.
peek
()))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// then eat a comment
// then eat a comment
if
(
Exp
::
Comment
.
Matches
(
INPUT
))
{
if
(
Exp
::
Comment
.
Matches
(
INPUT
))
{
// eat until line break
// eat until line break
while
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
while
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
}
}
// if it's NOT a line break, then we're done!
// if it's NOT a line break, then we're done!
...
@@ -168,7 +168,7 @@ namespace YAML
...
@@ -168,7 +168,7 @@ namespace YAML
// otherwise, let's eat the line break and keep going
// otherwise, let's eat the line break and keep going
int
n
=
Exp
::
Break
.
Match
(
INPUT
);
int
n
=
Exp
::
Break
.
Match
(
INPUT
);
INPUT
.
E
at
(
n
);
INPUT
.
e
at
(
n
);
// oh yeah, and let's get rid of that simple key
// oh yeah, and let's get rid of that simple key
VerifySimpleKey
();
VerifySimpleKey
();
...
...
scanner.h
View file @
c1966ba3
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
#include <queue>
#include <queue>
#include <stack>
#include <stack>
#include <set>
#include <set>
#include "regex.h"
#include "stream.h"
#include "stream.h"
namespace
YAML
namespace
YAML
...
...
scanscalar.cpp
View file @
c1966ba3
...
@@ -43,7 +43,7 @@ namespace YAML
...
@@ -43,7 +43,7 @@ namespace YAML
// escaped newline? (only if we're escaping on slash)
// escaped newline? (only if we're escaping on slash)
if
(
params
.
escape
==
'\\'
&&
Exp
::
EscBreak
.
Matches
(
INPUT
))
{
if
(
params
.
escape
==
'\\'
&&
Exp
::
EscBreak
.
Matches
(
INPUT
))
{
int
n
=
Exp
::
EscBreak
.
Match
(
INPUT
);
int
n
=
Exp
::
EscBreak
.
Match
(
INPUT
);
INPUT
.
E
at
(
n
);
INPUT
.
e
at
(
n
);
continue
;
continue
;
}
}
...
@@ -54,7 +54,7 @@ namespace YAML
...
@@ -54,7 +54,7 @@ namespace YAML
}
}
// otherwise, just add the damn character
// otherwise, just add the damn character
scalar
+=
INPUT
.
G
et
Char
();
scalar
+=
INPUT
.
g
et
();
}
}
// eof? if we're looking to eat something, then we throw
// eof? if we're looking to eat something, then we throw
...
@@ -72,21 +72,21 @@ namespace YAML
...
@@ -72,21 +72,21 @@ namespace YAML
int
n
=
params
.
end
.
Match
(
INPUT
);
int
n
=
params
.
end
.
Match
(
INPUT
);
if
(
n
>=
0
)
{
if
(
n
>=
0
)
{
if
(
params
.
eatEnd
)
if
(
params
.
eatEnd
)
INPUT
.
E
at
(
n
);
INPUT
.
e
at
(
n
);
break
;
break
;
}
}
// ********************************
// ********************************
// Phase #2: eat line ending
// Phase #2: eat line ending
n
=
Exp
::
Break
.
Match
(
INPUT
);
n
=
Exp
::
Break
.
Match
(
INPUT
);
INPUT
.
E
at
(
n
);
INPUT
.
e
at
(
n
);
// ********************************
// ********************************
// Phase #3: scan initial spaces
// Phase #3: scan initial spaces
// first the required indentation
// first the required indentation
while
(
INPUT
.
peek
()
==
' '
&&
(
INPUT
.
column
<
params
.
indent
||
(
params
.
detectIndent
&&
!
foundNonEmptyLine
)))
while
(
INPUT
.
peek
()
==
' '
&&
(
INPUT
.
column
<
params
.
indent
||
(
params
.
detectIndent
&&
!
foundNonEmptyLine
)))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// update indent if we're auto-detecting
// update indent if we're auto-detecting
if
(
params
.
detectIndent
&&
!
foundNonEmptyLine
)
if
(
params
.
detectIndent
&&
!
foundNonEmptyLine
)
...
@@ -101,7 +101,7 @@ namespace YAML
...
@@ -101,7 +101,7 @@ namespace YAML
if
(
!
params
.
eatLeadingWhitespace
)
if
(
!
params
.
eatLeadingWhitespace
)
break
;
break
;
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
}
}
// was this an empty line?
// was this an empty line?
...
...
scantoken.cpp
View file @
c1966ba3
...
@@ -23,17 +23,17 @@ namespace YAML
...
@@ -23,17 +23,17 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat indicator
// eat indicator
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// read name
// read name
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
name
+=
INPUT
.
G
et
Char
();
name
+=
INPUT
.
g
et
();
// read parameters
// read parameters
while
(
1
)
{
while
(
1
)
{
// first get rid of whitespace
// first get rid of whitespace
while
(
Exp
::
Blank
.
Matches
(
INPUT
))
while
(
Exp
::
Blank
.
Matches
(
INPUT
))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// break on newline or comment
// break on newline or comment
if
(
INPUT
.
peek
()
==
EOF
||
Exp
::
Break
.
Matches
(
INPUT
)
||
Exp
::
Comment
.
Matches
(
INPUT
))
if
(
INPUT
.
peek
()
==
EOF
||
Exp
::
Break
.
Matches
(
INPUT
)
||
Exp
::
Comment
.
Matches
(
INPUT
))
...
@@ -42,7 +42,7 @@ namespace YAML
...
@@ -42,7 +42,7 @@ namespace YAML
// now read parameter
// now read parameter
std
::
string
param
;
std
::
string
param
;
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
param
+=
INPUT
.
G
et
Char
();
param
+=
INPUT
.
g
et
();
params
.
push_back
(
param
);
params
.
push_back
(
param
);
}
}
...
@@ -61,7 +61,7 @@ namespace YAML
...
@@ -61,7 +61,7 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat
// eat
INPUT
.
E
at
(
3
);
INPUT
.
e
at
(
3
);
m_tokens
.
push
(
new
Token
(
TT_DOC_START
));
m_tokens
.
push
(
new
Token
(
TT_DOC_START
));
}
}
...
@@ -73,7 +73,7 @@ namespace YAML
...
@@ -73,7 +73,7 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat
// eat
INPUT
.
E
at
(
3
);
INPUT
.
e
at
(
3
);
m_tokens
.
push
(
new
Token
(
TT_DOC_END
));
m_tokens
.
push
(
new
Token
(
TT_DOC_END
));
}
}
...
@@ -86,7 +86,7 @@ namespace YAML
...
@@ -86,7 +86,7 @@ namespace YAML
m_simpleKeyAllowed
=
true
;
m_simpleKeyAllowed
=
true
;
// eat
// eat
char
ch
=
INPUT
.
G
et
Char
();
char
ch
=
INPUT
.
g
et
();
TOKEN_TYPE
type
=
(
ch
==
Keys
::
FlowSeqStart
?
TT_FLOW_SEQ_START
:
TT_FLOW_MAP_START
);
TOKEN_TYPE
type
=
(
ch
==
Keys
::
FlowSeqStart
?
TT_FLOW_SEQ_START
:
TT_FLOW_MAP_START
);
m_tokens
.
push
(
new
Token
(
type
));
m_tokens
.
push
(
new
Token
(
type
));
}
}
...
@@ -101,7 +101,7 @@ namespace YAML
...
@@ -101,7 +101,7 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat
// eat
char
ch
=
INPUT
.
G
et
Char
();
char
ch
=
INPUT
.
g
et
();
TOKEN_TYPE
type
=
(
ch
==
Keys
::
FlowSeqEnd
?
TT_FLOW_SEQ_END
:
TT_FLOW_MAP_END
);
TOKEN_TYPE
type
=
(
ch
==
Keys
::
FlowSeqEnd
?
TT_FLOW_SEQ_END
:
TT_FLOW_MAP_END
);
m_tokens
.
push
(
new
Token
(
type
));
m_tokens
.
push
(
new
Token
(
type
));
}
}
...
@@ -112,7 +112,7 @@ namespace YAML
...
@@ -112,7 +112,7 @@ namespace YAML
m_simpleKeyAllowed
=
true
;
m_simpleKeyAllowed
=
true
;
// eat
// eat
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
m_tokens
.
push
(
new
Token
(
TT_FLOW_ENTRY
));
m_tokens
.
push
(
new
Token
(
TT_FLOW_ENTRY
));
}
}
...
@@ -131,7 +131,7 @@ namespace YAML
...
@@ -131,7 +131,7 @@ namespace YAML
m_simpleKeyAllowed
=
true
;
m_simpleKeyAllowed
=
true
;
// eat
// eat
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
m_tokens
.
push
(
new
Token
(
TT_BLOCK_ENTRY
));
m_tokens
.
push
(
new
Token
(
TT_BLOCK_ENTRY
));
}
}
...
@@ -153,7 +153,7 @@ namespace YAML
...
@@ -153,7 +153,7 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat
// eat
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
m_tokens
.
push
(
new
Token
(
TT_KEY
));
m_tokens
.
push
(
new
Token
(
TT_KEY
));
}
}
...
@@ -181,7 +181,7 @@ namespace YAML
...
@@ -181,7 +181,7 @@ namespace YAML
}
}
// eat
// eat
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
m_tokens
.
push
(
new
Token
(
TT_VALUE
));
m_tokens
.
push
(
new
Token
(
TT_VALUE
));
}
}
...
@@ -197,12 +197,12 @@ namespace YAML
...
@@ -197,12 +197,12 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat the indicator
// eat the indicator
char
indicator
=
INPUT
.
G
et
Char
();
char
indicator
=
INPUT
.
g
et
();
alias
=
(
indicator
==
Keys
::
Alias
);
alias
=
(
indicator
==
Keys
::
Alias
);
// now eat the content
// now eat the content
while
(
Exp
::
AlphaNumeric
.
Matches
(
INPUT
))
while
(
Exp
::
AlphaNumeric
.
Matches
(
INPUT
))
tag
+=
INPUT
.
G
et
Char
();
tag
+=
INPUT
.
g
et
();
// we need to have read SOMETHING!
// we need to have read SOMETHING!
if
(
tag
.
empty
())
if
(
tag
.
empty
())
...
@@ -229,20 +229,20 @@ namespace YAML
...
@@ -229,20 +229,20 @@ namespace YAML
m_simpleKeyAllowed
=
false
;
m_simpleKeyAllowed
=
false
;
// eat the indicator
// eat the indicator
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// read the handle
// read the handle
while
(
INPUT
.
peek
()
!=
EOF
&&
INPUT
.
peek
()
!=
Keys
::
Tag
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
while
(
INPUT
.
peek
()
!=
EOF
&&
INPUT
.
peek
()
!=
Keys
::
Tag
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
handle
+=
INPUT
.
G
et
Char
();
handle
+=
INPUT
.
g
et
();
// is there a suffix?
// is there a suffix?
if
(
INPUT
.
peek
()
==
Keys
::
Tag
)
{
if
(
INPUT
.
peek
()
==
Keys
::
Tag
)
{
// eat the indicator
// eat the indicator
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// then read it
// then read it
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
while
(
INPUT
.
peek
()
!=
EOF
&&
!
Exp
::
BlankOrBreak
.
Matches
(
INPUT
))
suffix
+=
INPUT
.
G
et
Char
();
suffix
+=
INPUT
.
g
et
();
}
}
Token
*
pToken
=
new
Token
(
TT_TAG
);
Token
*
pToken
=
new
Token
(
TT_TAG
);
...
@@ -293,7 +293,7 @@ namespace YAML
...
@@ -293,7 +293,7 @@ namespace YAML
std
::
string
scalar
;
std
::
string
scalar
;
// eat single or double quote
// eat single or double quote
char
quote
=
INPUT
.
G
et
Char
();
char
quote
=
INPUT
.
g
et
();
bool
single
=
(
quote
==
'\''
);
bool
single
=
(
quote
==
'\''
);
// setup the scanning parameters
// setup the scanning parameters
...
@@ -333,13 +333,13 @@ namespace YAML
...
@@ -333,13 +333,13 @@ namespace YAML
params
.
detectIndent
=
true
;
params
.
detectIndent
=
true
;
// eat block indicator ('|' or '>')
// eat block indicator ('|' or '>')
char
indicator
=
INPUT
.
G
et
Char
();
char
indicator
=
INPUT
.
g
et
();
params
.
fold
=
(
indicator
==
Keys
::
FoldedScalar
);
params
.
fold
=
(
indicator
==
Keys
::
FoldedScalar
);
// eat chomping/indentation indicators
// eat chomping/indentation indicators
int
n
=
Exp
::
Chomp
.
Match
(
INPUT
);
int
n
=
Exp
::
Chomp
.
Match
(
INPUT
);
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
char
ch
=
INPUT
.
G
et
Char
();
char
ch
=
INPUT
.
g
et
();
if
(
ch
==
'+'
)
if
(
ch
==
'+'
)
params
.
chomp
=
KEEP
;
params
.
chomp
=
KEEP
;
else
if
(
ch
==
'-'
)
else
if
(
ch
==
'-'
)
...
@@ -355,12 +355,12 @@ namespace YAML
...
@@ -355,12 +355,12 @@ namespace YAML
// now eat whitespace
// now eat whitespace
while
(
Exp
::
Blank
.
Matches
(
INPUT
))
while
(
Exp
::
Blank
.
Matches
(
INPUT
))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// and comments to the end of the line
// and comments to the end of the line
if
(
Exp
::
Comment
.
Matches
(
INPUT
))
if
(
Exp
::
Comment
.
Matches
(
INPUT
))
while
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
while
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
INPUT
.
E
at
(
1
);
INPUT
.
e
at
(
1
);
// if it's not a line break, then we ran into a bad character inline
// if it's not a line break, then we ran into a bad character inline
if
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
if
(
INPUT
&&
!
Exp
::
Break
.
Matches
(
INPUT
))
...
...
stream.cpp
View file @
c1966ba3
...
@@ -2,9 +2,9 @@
...
@@ -2,9 +2,9 @@
namespace
YAML
namespace
YAML
{
{
//
G
et
Char
//
g
et
// . Extracts a character from the stream and updates our position
// . Extracts a character from the stream and updates our position
char
Stream
::
G
et
Char
()
char
Stream
::
g
et
()
{
{
char
ch
=
input
.
get
();
char
ch
=
input
.
get
();
column
++
;
column
++
;
...
@@ -15,21 +15,21 @@ namespace YAML
...
@@ -15,21 +15,21 @@ namespace YAML
return
ch
;
return
ch
;
}
}
//
G
et
Char
//
g
et
// . Extracts 'n' characters from the stream and updates our position
// . Extracts 'n' characters from the stream and updates our position
std
::
string
Stream
::
G
et
Char
(
int
n
)
std
::
string
Stream
::
g
et
(
int
n
)
{
{
std
::
string
ret
;
std
::
string
ret
;
for
(
int
i
=
0
;
i
<
n
;
i
++
)
for
(
int
i
=
0
;
i
<
n
;
i
++
)
ret
+=
G
et
Char
();
ret
+=
g
et
();
return
ret
;
return
ret
;
}
}
//
E
at
//
e
at
// . Eats 'n' characters and updates our position.
// . Eats 'n' characters and updates our position.
void
Stream
::
E
at
(
int
n
)
void
Stream
::
e
at
(
int
n
)
{
{
for
(
int
i
=
0
;
i
<
n
;
i
++
)
for
(
int
i
=
0
;
i
<
n
;
i
++
)
G
et
Char
();
g
et
();
}
}
}
}
stream.h
View file @
c1966ba3
...
@@ -9,15 +9,15 @@ namespace YAML
...
@@ -9,15 +9,15 @@ namespace YAML
{
{
Stream
(
std
::
istream
&
input_
)
:
input
(
input_
),
line
(
0
),
column
(
0
)
{}
Stream
(
std
::
istream
&
input_
)
:
input
(
input_
),
line
(
0
),
column
(
0
)
{}
char
peek
()
{
return
input
.
peek
();
}
int
pos
()
const
{
return
input
.
tellg
();
}
int
pos
()
const
{
return
input
.
tellg
();
}
operator
std
::
istream
&
()
{
return
input
;
}
operator
std
::
istream
&
()
{
return
input
;
}
operator
bool
()
{
return
input
.
good
();
}
operator
bool
()
{
return
input
.
good
();
}
bool
operator
!
()
{
return
!
input
;
}
bool
operator
!
()
{
return
!
input
;
}
char
GetChar
();
char
peek
()
{
return
input
.
peek
();
}
std
::
string
GetChar
(
int
n
);
char
get
();
void
Eat
(
int
n
=
1
);
std
::
string
get
(
int
n
);
void
eat
(
int
n
=
1
);
std
::
istream
&
input
;
std
::
istream
&
input
;
int
line
,
column
;
int
line
,
column
;
...
...
test.yaml
View file @
c1966ba3
---
---
Time
:
2001-11-23 15:01:42 -5
model
:
User
:
ed
file
:
data/models/compound.model
Warning
:
textures
:
data/materials/compound
This is an error message
rooms
:
for the log file
-
name
:
"
Room
#1"
---
pos
:
[
0
,
0
,
0
]
Time
:
2001-11-23 15:02:31 -5
size
:
[
1000
,
1000
,
500
]
User
:
ed
height
:
500
Warning
:
stairtype
:
none
A slightly different error
display
:
[]
message.
pathfinding
:
---
tilesize
:
50
Date
:
2001-11-23 15:03:17 -5
size
:
[
24
,
24
]
User
:
ed
map
:
|
Fatal
:
-----------------------
Unknown variable "bar"
-+++++++++++++++++++++-
Stack
:
-+-------------------+-
-
file
:
TopClass.py
-+-------------------+-
line
:
23
-+-------------------+-
code
:
|
-+-------------------+-
x = MoreObject("345\n")
-+-------------------+-
-
file
:
MoreClass.py
-+-------------------+-
line
:
58
-+-------------------+-
code
:
|-
-+-------------------+-
foo = bar
-+---------------------
\ No newline at end of file
-+---------------------
-+---------------------
-+---------------------
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+++++++++++++++++++++-
-----------------------
-
name
:
Doorway
pos
:
[
1000
,
400
,
0
]
size
:
[
50
,
200
,
500
]
height
:
500
stairtype
:
none
display
:
[]
pathfinding
:
tilesize
:
50
size
:
[
5
,
9
]
map
:
|
-----
-+++-
-----
-----
-----
-----
-----
-+++-
-----
-
name
:
"
Room
#2"
pos
:
[
1050
,
0
,
0
]
size
:
[
1000
,
1000
,
500
]
height
:
500
stairtype
:
none
display
:
[]
pathfinding
:
tilesize
:
50
size
:
[
24
,
24
]
map
:
|
-----------------------
-+++++++++++++++++++++-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
---------------------+-
---------------------+-
---------------------+-
---------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+-------------------+-
-+++++++++++++++++++++-
-----------------------
exits
:
-
room1
:
"
Room
#1"
room2
:
"
Room
#2"
dir
:
e
pos
:
[
400
,
600
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment