diff options
Diffstat (limited to 'vendor/github.com/ruudk/golang-pdf417/data_encoder.go')
| -rw-r--r-- | vendor/github.com/ruudk/golang-pdf417/data_encoder.go | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/vendor/github.com/ruudk/golang-pdf417/data_encoder.go b/vendor/github.com/ruudk/golang-pdf417/data_encoder.go deleted file mode 100644 index cd7d206..0000000 --- a/vendor/github.com/ruudk/golang-pdf417/data_encoder.go +++ /dev/null @@ -1,99 +0,0 @@ -package pdf417 - -type Encoder interface { - GetName() string - CanEncode(char string) bool - GetSwitchCode(data string) int - Encode(data string, addSwitchCode bool) []int -} - -type DataEncoder struct { - Encoders []Encoder - DefaultEncoder Encoder -} - -type Chain struct { - Data string - Encoder Encoder -} - -func CreateDataEncoder() DataEncoder { - numberEncoder := CreateNumberEncoder() - textEncoder := CreateTextEncoder() - - encoder := DataEncoder{ - []Encoder{numberEncoder, textEncoder}, - textEncoder, - } - - return encoder -} - -func (dataEncoder DataEncoder) Encode(data string) []int { - chains := dataEncoder.SplitToChains(data) - - if len(chains) == 0 { - panic("hmmm") - } - - - firstEncoder := chains[0].Encoder - addSwitchCode := firstEncoder.GetName() != dataEncoder.DefaultEncoder.GetName() - - cws := []int{} - - for _, chainWithEncoder := range chains { - encoded := chainWithEncoder.Encoder.Encode( - chainWithEncoder.Data, - addSwitchCode, - ) - - cws = append(cws, encoded...) - - addSwitchCode = true - } - - return cws -} - -func (dataEncoder DataEncoder) SplitToChains(data string) []Chain { - chains := []Chain{} - chainData := "" - encoder := dataEncoder.DefaultEncoder - - for i := 0; i < len(data); i++ { - char := string(data[i]) - - newEncoder := getEncoder( - dataEncoder.Encoders, - char, - ) - - if newEncoder != encoder { - if len(chainData) > 0 { - chains = append(chains, Chain{chainData, encoder}) - chainData = "" - } - - encoder = newEncoder - } - - chainData = chainData + char - } - - if len(chainData) > 0 { - chains = append(chains, Chain{chainData, encoder}) - } - - return chains -} - -func getEncoder(encoders []Encoder, char string) Encoder { - for _, encoder := range encoders { - if encoder.CanEncode(char) { - return encoder - } - } - - panic("Cannot encode character " + char) -} |
