#33 comment package has renamed to meta and parser now saves whitespaces
This commit is contained in:
39
meta/comment.go
Normal file
39
meta/comment.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package meta
|
||||
|
||||
import (
|
||||
"github.com/z7zmey/php-parser/position"
|
||||
)
|
||||
|
||||
// Comment aggrigates information about comment /**
|
||||
type Comment struct {
|
||||
Value string
|
||||
Position *position.Position
|
||||
TokenName TokenName
|
||||
}
|
||||
|
||||
// NewComment - Comment constructor
|
||||
func NewComment(value string, pos *position.Position) *Comment {
|
||||
return &Comment{
|
||||
Value: value,
|
||||
Position: pos,
|
||||
TokenName: UnknownToken,
|
||||
}
|
||||
}
|
||||
|
||||
// SetTokenName sets token name
|
||||
func (c *Comment) SetTokenName(tokenName TokenName) {
|
||||
c.TokenName = tokenName
|
||||
}
|
||||
|
||||
// GetTokenName returns token name
|
||||
func (c *Comment) GetTokenName() TokenName {
|
||||
return c.TokenName
|
||||
}
|
||||
|
||||
func (c *Comment) String() string {
|
||||
return c.Value
|
||||
}
|
||||
|
||||
func (c *Comment) GetPosition() *position.Position {
|
||||
return c.Position
|
||||
}
|
||||
44
meta/comment_test.go
Normal file
44
meta/comment_test.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package meta_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/z7zmey/php-parser/position"
|
||||
|
||||
"github.com/z7zmey/php-parser/meta"
|
||||
)
|
||||
|
||||
func TestCommentPrint(t *testing.T) {
|
||||
expected := "/** hello world */"
|
||||
|
||||
comment := meta.NewComment(expected, nil)
|
||||
|
||||
actual := comment.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommentSetGetTokenName(t *testing.T) {
|
||||
expected := meta.ArrayToken
|
||||
c := meta.NewComment("/** hello world */", nil)
|
||||
c.SetTokenName(expected)
|
||||
|
||||
actual := c.GetTokenName()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommentGetPosition(t *testing.T) {
|
||||
expected := position.NewPosition(1, 1, 1, 1)
|
||||
c := meta.NewComment("/** hello world */", expected)
|
||||
|
||||
actual := c.GetPosition()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
12
meta/meta.go
Normal file
12
meta/meta.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package meta
|
||||
|
||||
import (
|
||||
"github.com/z7zmey/php-parser/position"
|
||||
)
|
||||
|
||||
type Meta interface {
|
||||
String() string
|
||||
SetTokenName(tn TokenName)
|
||||
GetTokenName() TokenName
|
||||
GetPosition() *position.Position
|
||||
}
|
||||
328
meta/tokenNames.go
Normal file
328
meta/tokenNames.go
Normal file
@@ -0,0 +1,328 @@
|
||||
package meta
|
||||
|
||||
// TokenName is used to specify a comment position
|
||||
type TokenName int
|
||||
|
||||
const (
|
||||
UnknownToken TokenName = iota
|
||||
IncludeToken
|
||||
IncludeOnceToken
|
||||
ExitToken
|
||||
IfToken
|
||||
LnumberToken
|
||||
DnumberToken
|
||||
StringToken
|
||||
StringVarnameToken
|
||||
VariableToken
|
||||
NumStringToken
|
||||
InlineHTMLToken
|
||||
EncapsedAndWhitespaceToken
|
||||
ConstantEncapsedStringToken
|
||||
EchoToken
|
||||
DoToken
|
||||
WhileToken
|
||||
EndwhileToken
|
||||
ForInitSemicolonToken
|
||||
ForCondSemicolonToken
|
||||
ForToken
|
||||
EndforToken
|
||||
ForeachToken
|
||||
EndforeachToken
|
||||
DeclareToken
|
||||
EnddeclareToken
|
||||
AsToken
|
||||
SwitchToken
|
||||
EndswitchToken
|
||||
CaseToken
|
||||
DefaultToken
|
||||
BreakToken
|
||||
ContinueToken
|
||||
GotoToken
|
||||
FunctionToken
|
||||
ConstToken
|
||||
ReturnToken
|
||||
TryToken
|
||||
CatchToken
|
||||
FinallyToken
|
||||
ThrowToken
|
||||
UseToken
|
||||
InsteadofToken
|
||||
GlobalToken
|
||||
VarToken
|
||||
UnsetToken
|
||||
IssetToken
|
||||
EmptyToken
|
||||
ClassToken
|
||||
TraitToken
|
||||
InterfaceToken
|
||||
ExtendsToken
|
||||
ImplementsToken
|
||||
DoubleArrowToken
|
||||
ListToken
|
||||
ArrayToken
|
||||
CallableToken
|
||||
ClassCToken
|
||||
TraitCToken
|
||||
MethodCToken
|
||||
FuncCToken
|
||||
LineToken
|
||||
FileToken
|
||||
StartHeredocToken
|
||||
DollarOpenCurlyBracesToken
|
||||
CurlyOpenToken
|
||||
PaamayimNekudotayimToken
|
||||
NamespaceToken
|
||||
NsCToken
|
||||
DirToken
|
||||
NsSeparatorToken
|
||||
EllipsisToken
|
||||
EvalToken
|
||||
RequireToken
|
||||
RequireOnceToken
|
||||
LogicalOrToken
|
||||
LogicalXorToken
|
||||
LogicalAndToken
|
||||
InstanceofToken
|
||||
NewToken
|
||||
CloneToken
|
||||
ElseifToken
|
||||
ElseToken
|
||||
EndifToken
|
||||
PrintToken
|
||||
YieldToken
|
||||
StaticToken
|
||||
AbstractToken
|
||||
FinalToken
|
||||
PrivateToken
|
||||
ProtectedToken
|
||||
PublicToken
|
||||
IncToken
|
||||
DecToken
|
||||
YieldFromToken
|
||||
ObjectOperatorToken
|
||||
IntCastToken
|
||||
DoubleCastToken
|
||||
StringCastToken
|
||||
ArrayCastToken
|
||||
ObjectCastToken
|
||||
BoolCastToken
|
||||
UnsetCastToken
|
||||
CoalesceToken
|
||||
SpaceshipToken
|
||||
PlusEqualToken
|
||||
MinusEqualToken
|
||||
MulEqualToken
|
||||
PowEqualToken
|
||||
DivEqualToken
|
||||
ConcatEqualToken
|
||||
ModEqualToken
|
||||
AndEqualToken
|
||||
OrEqualToken
|
||||
XorEqualToken
|
||||
SlEqualToken
|
||||
SrEqualToken
|
||||
BooleanOrToken
|
||||
BooleanAndToken
|
||||
PowToken
|
||||
SlToken
|
||||
SrToken
|
||||
IsIdenticalToken
|
||||
IsNotIdenticalToken
|
||||
IsEqualToken
|
||||
IsNotEqualToken
|
||||
IsSmallerOrEqualToken
|
||||
IsGreaterOrEqualToken
|
||||
HaltCompilerToken
|
||||
IdentifierToken
|
||||
CaseSeparatorToken // ';' or ':'
|
||||
DoubleQuoteToken // '"'
|
||||
BackquoteToken // '`'
|
||||
OpenCurlyBracesToken // '{'
|
||||
CloseCurlyBracesToken // '}'
|
||||
SemiColonToken // ';'
|
||||
ColonToken // ':'
|
||||
OpenParenthesisToken // '('
|
||||
CloseParenthesisToken // ')'
|
||||
OpenSquareBracket // '['
|
||||
CloseSquareBracket // ']'
|
||||
QuestionMarkToken // '?'
|
||||
AmpersandToken // '&'
|
||||
MinusToken // '-'
|
||||
PlusToken // '+'
|
||||
ExclamationMarkToken // '!'
|
||||
TildeToken // '~'
|
||||
AtToken // '@'
|
||||
DollarToken // '$'
|
||||
CommaToken // ','
|
||||
VerticalBarToken // '|'
|
||||
EqualToken // '='
|
||||
CaretToken // '^'
|
||||
AsteriskToken // '*'
|
||||
SlashToken // '/'
|
||||
PercentToken // '%'
|
||||
LessToken // '<'
|
||||
GreaterToken // '>'
|
||||
DotToken // '.'
|
||||
)
|
||||
|
||||
var TokenNames = map[TokenName]string{
|
||||
UnknownToken: "UnknownToken",
|
||||
IncludeToken: "IncludeToken",
|
||||
IncludeOnceToken: "IncludeOnceToken",
|
||||
ExitToken: "ExitToken",
|
||||
IfToken: "IfToken",
|
||||
LnumberToken: "LnumberToken",
|
||||
DnumberToken: "DnumberToken",
|
||||
StringToken: "StringToken",
|
||||
StringVarnameToken: "StringVarnameToken",
|
||||
VariableToken: "VariableToken",
|
||||
NumStringToken: "NumStringToken",
|
||||
InlineHTMLToken: "InlineHTMLToken",
|
||||
EncapsedAndWhitespaceToken: "EncapsedAndWhitespaceToken",
|
||||
ConstantEncapsedStringToken: "ConstantEncapsedStringToken",
|
||||
EchoToken: "EchoToken",
|
||||
DoToken: "DoToken",
|
||||
WhileToken: "WhileToken",
|
||||
EndwhileToken: "EndwhileToken",
|
||||
ForInitSemicolonToken: "ForInitSemicolonToken",
|
||||
ForCondSemicolonToken: "ForCondSemicolonToken",
|
||||
ForToken: "ForToken",
|
||||
EndforToken: "EndforToken",
|
||||
ForeachToken: "ForeachToken",
|
||||
EndforeachToken: "EndforeachToken",
|
||||
DeclareToken: "DeclareToken",
|
||||
EnddeclareToken: "EnddeclareToken",
|
||||
AsToken: "AsToken",
|
||||
SwitchToken: "SwitchToken",
|
||||
EndswitchToken: "EndswitchToken",
|
||||
CaseToken: "CaseToken",
|
||||
DefaultToken: "DefaultToken",
|
||||
BreakToken: "BreakToken",
|
||||
ContinueToken: "ContinueToken",
|
||||
GotoToken: "GotoToken",
|
||||
FunctionToken: "FunctionToken",
|
||||
ConstToken: "ConstToken",
|
||||
ReturnToken: "ReturnToken",
|
||||
TryToken: "TryToken",
|
||||
CatchToken: "CatchToken",
|
||||
FinallyToken: "FinallyToken",
|
||||
ThrowToken: "ThrowToken",
|
||||
UseToken: "UseToken",
|
||||
InsteadofToken: "InsteadofToken",
|
||||
GlobalToken: "GlobalToken",
|
||||
VarToken: "VarToken",
|
||||
UnsetToken: "UnsetToken",
|
||||
IssetToken: "IssetToken",
|
||||
EmptyToken: "EmptyToken",
|
||||
ClassToken: "ClassToken",
|
||||
TraitToken: "TraitToken",
|
||||
InterfaceToken: "InterfaceToken",
|
||||
ExtendsToken: "ExtendsToken",
|
||||
ImplementsToken: "ImplementsToken",
|
||||
DoubleArrowToken: "DoubleArrowToken",
|
||||
ListToken: "ListToken",
|
||||
ArrayToken: "ArrayToken",
|
||||
CallableToken: "CallableToken",
|
||||
ClassCToken: "ClassCToken",
|
||||
TraitCToken: "TraitCToken",
|
||||
MethodCToken: "MethodCToken",
|
||||
FuncCToken: "FuncCToken",
|
||||
LineToken: "LineToken",
|
||||
FileToken: "FileToken",
|
||||
StartHeredocToken: "StartHeredocToken",
|
||||
DollarOpenCurlyBracesToken: "DollarOpenCurlyBracesToken",
|
||||
CurlyOpenToken: "CurlyOpenToken",
|
||||
PaamayimNekudotayimToken: "PaamayimNekudotayimToken",
|
||||
NamespaceToken: "NamespaceToken",
|
||||
NsCToken: "NsCToken",
|
||||
DirToken: "DirToken",
|
||||
NsSeparatorToken: "NsSeparatorToken",
|
||||
EllipsisToken: "EllipsisToken",
|
||||
EvalToken: "EvalToken",
|
||||
RequireToken: "RequireToken",
|
||||
RequireOnceToken: "RequireOnceToken",
|
||||
LogicalOrToken: "LogicalOrToken",
|
||||
LogicalXorToken: "LogicalXorToken",
|
||||
LogicalAndToken: "LogicalAndToken",
|
||||
InstanceofToken: "InstanceofToken",
|
||||
NewToken: "NewToken",
|
||||
CloneToken: "CloneToken",
|
||||
ElseifToken: "ElseifToken",
|
||||
ElseToken: "ElseToken",
|
||||
EndifToken: "EndifToken",
|
||||
PrintToken: "PrintToken",
|
||||
YieldToken: "YieldToken",
|
||||
StaticToken: "StaticToken",
|
||||
AbstractToken: "AbstractToken",
|
||||
FinalToken: "FinalToken",
|
||||
PrivateToken: "PrivateToken",
|
||||
ProtectedToken: "ProtectedToken",
|
||||
PublicToken: "PublicToken",
|
||||
IncToken: "IncToken",
|
||||
DecToken: "DecToken",
|
||||
YieldFromToken: "YieldFromToken",
|
||||
ObjectOperatorToken: "ObjectOperatorToken",
|
||||
IntCastToken: "IntCastToken",
|
||||
DoubleCastToken: "DoubleCastToken",
|
||||
StringCastToken: "StringCastToken",
|
||||
ArrayCastToken: "ArrayCastToken",
|
||||
ObjectCastToken: "ObjectCastToken",
|
||||
BoolCastToken: "BoolCastToken",
|
||||
UnsetCastToken: "UnsetCastToken",
|
||||
CoalesceToken: "CoalesceToken",
|
||||
SpaceshipToken: "SpaceshipToken",
|
||||
PlusEqualToken: "PlusEqualToken",
|
||||
MinusEqualToken: "MinusEqualToken",
|
||||
MulEqualToken: "MulEqualToken",
|
||||
PowEqualToken: "PowEqualToken",
|
||||
DivEqualToken: "DivEqualToken",
|
||||
ConcatEqualToken: "ConcatEqualToken",
|
||||
ModEqualToken: "ModEqualToken",
|
||||
AndEqualToken: "AndEqualToken",
|
||||
OrEqualToken: "OrEqualToken",
|
||||
XorEqualToken: "XorEqualToken",
|
||||
SlEqualToken: "SlEqualToken",
|
||||
SrEqualToken: "SrEqualToken",
|
||||
BooleanOrToken: "BooleanOrToken",
|
||||
BooleanAndToken: "BooleanAndToken",
|
||||
PowToken: "PowToken",
|
||||
SlToken: "SlToken",
|
||||
SrToken: "SrToken",
|
||||
IsIdenticalToken: "IsIdenticalToken",
|
||||
IsNotIdenticalToken: "IsNotIdenticalToken",
|
||||
IsEqualToken: "IsEqualToken",
|
||||
IsNotEqualToken: "IsNotEqualToken",
|
||||
IsSmallerOrEqualToken: "IsSmallerOrEqualToken",
|
||||
IsGreaterOrEqualToken: "IsGreaterOrEqualToken",
|
||||
HaltCompilerToken: "HaltCompilerToken",
|
||||
IdentifierToken: "IdentifierToken",
|
||||
CaseSeparatorToken: "CaseSeparatorToken",
|
||||
DoubleQuoteToken: "DoubleQuoteToken",
|
||||
BackquoteToken: "BackquoteToken",
|
||||
OpenCurlyBracesToken: "OpenCurlyBracesToken",
|
||||
CloseCurlyBracesToken: "CloseCurlyBracesToken",
|
||||
SemiColonToken: "SemiColonToken",
|
||||
ColonToken: "ColonToken",
|
||||
OpenParenthesisToken: "OpenParenthesisToken",
|
||||
CloseParenthesisToken: "CloseParenthesisToken",
|
||||
OpenSquareBracket: "OpenSquareBracket",
|
||||
CloseSquareBracket: "CloseSquareBracket",
|
||||
QuestionMarkToken: "QuestionMarkToken",
|
||||
AmpersandToken: "AmpersandToken",
|
||||
MinusToken: "MinusToken",
|
||||
PlusToken: "PlusToken",
|
||||
ExclamationMarkToken: "ExclamationMarkToken",
|
||||
TildeToken: "TildeToken",
|
||||
AtToken: "AtToken",
|
||||
DollarToken: "DollarToken",
|
||||
CommaToken: "CommaToken",
|
||||
VerticalBarToken: "VerticalBarToken",
|
||||
EqualToken: "EqualToken",
|
||||
CaretToken: "CaretToken",
|
||||
AsteriskToken: "AsteriskToken",
|
||||
SlashToken: "SlashToken",
|
||||
PercentToken: "PercentToken",
|
||||
LessToken: "LessToken",
|
||||
GreaterToken: "GreaterToken",
|
||||
DotToken: "DotToken",
|
||||
}
|
||||
37
meta/white_space.go
Normal file
37
meta/white_space.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package meta
|
||||
|
||||
import (
|
||||
"github.com/z7zmey/php-parser/position"
|
||||
)
|
||||
|
||||
type WhiteSpace struct {
|
||||
Value string
|
||||
Position *position.Position
|
||||
TokenName TokenName
|
||||
}
|
||||
|
||||
func NewWhiteSpace(value string, pos *position.Position) *WhiteSpace {
|
||||
return &WhiteSpace{
|
||||
Value: value,
|
||||
Position: pos,
|
||||
TokenName: UnknownToken,
|
||||
}
|
||||
}
|
||||
|
||||
// SetTokenName sets token name
|
||||
func (c *WhiteSpace) SetTokenName(tokenName TokenName) {
|
||||
c.TokenName = tokenName
|
||||
}
|
||||
|
||||
// GetTokenName returns token name
|
||||
func (c *WhiteSpace) GetTokenName() TokenName {
|
||||
return c.TokenName
|
||||
}
|
||||
|
||||
func (el *WhiteSpace) String() string {
|
||||
return el.Value
|
||||
}
|
||||
|
||||
func (el *WhiteSpace) GetPosition() *position.Position {
|
||||
return el.Position
|
||||
}
|
||||
44
meta/white_space_test.go
Normal file
44
meta/white_space_test.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package meta_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/z7zmey/php-parser/position"
|
||||
|
||||
"github.com/z7zmey/php-parser/meta"
|
||||
)
|
||||
|
||||
func TestWhiteSpacePrint(t *testing.T) {
|
||||
expected := "\n "
|
||||
|
||||
w := meta.NewWhiteSpace(expected, nil)
|
||||
|
||||
actual := w.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestWhiteSpaceSetGetTokenName(t *testing.T) {
|
||||
expected := meta.ArrayToken
|
||||
w := meta.NewWhiteSpace("\n ", nil)
|
||||
w.SetTokenName(expected)
|
||||
|
||||
actual := w.GetTokenName()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
|
||||
func TestWhiteSpaceGetPosition(t *testing.T) {
|
||||
expected := position.NewPosition(1, 1, 1, 1)
|
||||
q := meta.NewWhiteSpace("\n ", expected)
|
||||
|
||||
actual := q.GetPosition()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("expected and actual are not equal\n")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user