Example #1
0
func proceed(i *TypeOneI, rdr fancy.Reader) {
	for !i.Done {
		t, _ := ps.Token(rdr)
		//    fmt.Printf("Stack: %v\n", util.StringArray(i.St.Dump()));
		//    fmt.Printf("--- %s\n", t);
		if len(t) < 1 {
			break
		}
		b, _ := rdr.ReadByte()
		if b > 32 {
			rdr.UnreadByte()
		}
		if len(t) == 0 {
			break
		}
		if d, ok := find(i, "/"+string(t)); ok {
			if d[0] == '{' {
				proceed(i, fancy.SliceReader(d[1:len(d)-1]))
			} else {
				i.St.Push(d)
			}
		} else if f, ok := Ops[string(t)]; ok {
			f(i)
		} else {
			i.St.Push(t)
		}
	}
	return
}
Example #2
0
File: ps.go Project: raff/pdfreader
func SkipLE(f fancy.Reader) {
	for {
		c, err := f.ReadByte()
		if err != nil {
			return
		}
		if c > 32 {
			f.UnreadByte()
			return
		}
		if c == 13 {
			c, err = f.ReadByte()
			if err == nil && c != 10 {
				f.UnreadByte()
			}
			return
		}
		if c == 10 {
			return
		}
	}
}
Example #3
0
File: ps.go Project: raff/pdfreader
func Token(f fancy.Reader) ([]byte, int64) {
again:
	c := skipSpaces(f)
	if c == 0 {
		return []byte{}, -1
	}
	p := fpos(f) - 1
	switch c {
	case '%':
		skipComment(f)
		goto again
	case '<', '[', '{':
		skipComposite(f)
	case '(':
		skipString(f)
	default:
		if skipToDelim(f) != 255 {
			f.UnreadByte()
		}
	}
	n := int(fpos(f) - p)
	f.Seek(p, 0)
	return f.Slice(n), p
}