From 500caaeda74dd9c660279036293f4b2997cf0b03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 9 Sep 2017 09:42:37 +0200 Subject: Add vendor --- vendor/github.com/llgcode/ps/procedure.go | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 vendor/github.com/llgcode/ps/procedure.go (limited to 'vendor/github.com/llgcode/ps/procedure.go') diff --git a/vendor/github.com/llgcode/ps/procedure.go b/vendor/github.com/llgcode/ps/procedure.go new file mode 100644 index 0000000..f6f5454 --- /dev/null +++ b/vendor/github.com/llgcode/ps/procedure.go @@ -0,0 +1,46 @@ +// Copyright 2010 The postscript-go Authors. All rights reserved. +// created: 13/12/2010 by Laurent Le Goff + +package ps + +type ProcedureDefinition struct { + Values []Value +} + +func NewProcedureDefinition() *ProcedureDefinition { + proceduredef := new(ProcedureDefinition) + proceduredef.Values = make([]Value, 0, 100) + return proceduredef +} + +func (p *ProcedureDefinition) Add(value Value) { + p.Values = append(p.Values, value) +} + +type Procedure struct { + def *ProcedureDefinition +} + +func NewProcedure(def *ProcedureDefinition) *Procedure { + return &Procedure{def} +} + +func (p *Procedure) Execute(interpreter *Interpreter) { + for _, value := range p.def.Values { + if s, ok := value.(string); ok { + firstChar := s[0] + if firstChar != '(' && firstChar != '/' { + interpreter.computeReference(s) + } else { + interpreter.Push(value) + } + } else { + operator, isOperator := value.(Operator) + if isOperator { + operator.Execute(interpreter) + } else { + interpreter.Push(value) + } + } + } +} -- cgit v1.2.3