Compare commits

..

No commits in common. "1809aed887a175a683b8e7117a26f418bf16c73e" and "e192181ac8dc1306d95d374df7fa1b36e3a5b8ba" have entirely different histories.

8 changed files with 16 additions and 127 deletions

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4"> <module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />

View file

@ -1,3 +1,5 @@
[![Go Report Card](https://goreportcard.com/badge/github.com/jakoubek/feragstring)](https://goreportcard.com/report/github.com/jakoubek/feragstring)
# feragstring # feragstring
*feragstring* is a Go package for creating a FERAG string file programmatically. If you don't know what FERAG (the company) or a FERAG string is you probably don't need this package ;-) *feragstring* is a Go package for creating a FERAG string file programmatically. If you don't know what FERAG (the company) or a FERAG string is you probably don't need this package ;-)
@ -81,7 +83,7 @@ feragString := fs.PrintOut()
## Installation ## Installation
```bash ```bash
go get -u git.sr.ht/~jakoubek/feragstring go get -u github.com/jakoubek/feragstring
``` ```
## Need commercial support? ## Need commercial support?

View file

@ -84,10 +84,8 @@ func (fs *FeragString) PrintOut() string {
// AddProductReference adds a Product Reference instance to the list // AddProductReference adds a Product Reference instance to the list
// of product references of the FeragString // of product references of the FeragString
func (fs *FeragString) AddProductReference(pr *ProductReference) error { func (fs *FeragString) AddProductReference(pr *ProductReference) error {
if pr.productReferenceNumber == 0 { fs.ProductReferencesNr++
fs.ProductReferencesNr++ pr.SetProductReferenceNumber(fs.ProductReferencesNr)
pr.SetProductReferenceNumber(fs.ProductReferencesNr)
}
if pr.productReferenceNumber == 1 && pr.productUsageType == 0 { if pr.productReferenceNumber == 1 && pr.productUsageType == 0 {
pr.SetProductUsageType(1) pr.SetProductUsageType(1)
} }

2
go.mod
View file

@ -1,3 +1,3 @@
module git.sr.ht/~jakoubek/feragstring module github.com/jakoubek/feragstring
go 1.14 go 1.14

View file

@ -31,9 +31,6 @@ func NewMissingParameter(missingRate, missingSize int) MissingParameter {
} }
func (pr *ProductReference) IssueReference() string { func (pr *ProductReference) IssueReference() string {
if pr.issueReference == "" {
return ""
}
return fmt.Sprintf("+99195%-8s", pr.issueReference) return fmt.Sprintf("+99195%-8s", pr.issueReference)
} }
@ -50,7 +47,7 @@ func (pr *ProductReference) SetMissingParameter(missingParameter MissingParamete
} }
func (pr *ProductReference) Scatter() string { func (pr *ProductReference) Scatter() string {
return fmt.Sprintf("+99276%06d", pr.scatter) return fmt.Sprintf("+99102%06d", pr.scatter)
} }
func (pr *ProductReference) SetScatter(scatter int) { func (pr *ProductReference) SetScatter(scatter int) {
@ -122,17 +119,13 @@ func (pr *ProductReference) SetProductName(productName string) {
} }
func (pr *ProductReference) ProductReferenceNumber() string { func (pr *ProductReference) ProductReferenceNumber() string {
return fmt.Sprintf("+99141%03d", pr.productReferenceNumber) return fmt.Sprintf("+41%02d", pr.productReferenceNumber)
} }
func (pr *ProductReference) SetProductReferenceNumber(productReferenceNumber int) { func (pr *ProductReference) SetProductReferenceNumber(productReferenceNumber int) {
pr.productReferenceNumber = productReferenceNumber pr.productReferenceNumber = productReferenceNumber
} }
func (pr *ProductReference) GetProductReferenceNumber() int {
return pr.productReferenceNumber
}
func NewProductReference() *ProductReference { func NewProductReference() *ProductReference {
pr := ProductReference{ pr := ProductReference{
FeragMessage: FeragMessage{"2450", "!"}, FeragMessage: FeragMessage{"2450", "!"},
@ -154,7 +147,7 @@ func (pr *ProductReference) Payload() string {
data += pr.Supervision() data += pr.Supervision()
data += pr.Overlap() data += pr.Overlap()
data += pr.FeedingMode() data += pr.FeedingMode()
//data += pr.Scatter() data += pr.Scatter()
data += pr.MissingParameter() data += pr.MissingParameter()
data += pr.IssueReference() data += pr.IssueReference()
return data return data

View file

@ -2,25 +2,15 @@ package feragstring
import "fmt" import "fmt"
// ProductionDrop is the struct for one production drop
// underneath a route
type ProductionDrop struct { type ProductionDrop struct {
FeragMessage FeragMessage
agentName string agentName string
numberOfCopies int numberOfCopies int
ControlCharacters ControlCharacterSet ControlCharacters ControlCharacterSet
limit int dontProduce bool
maxStack int topsheetData string
standard int
parameterN int
maxBundle int
parameterSz int
dontProduce bool
topsheetData string
productReferenceNumbers []int
} }
// TopsheetData returns the formatted topsheet data segment
func (pd *ProductionDrop) TopsheetData() string { func (pd *ProductionDrop) TopsheetData() string {
if pd.topsheetData == "" { if pd.topsheetData == "" {
return "" return ""
@ -40,95 +30,30 @@ func (pd *ProductionDrop) TopsheetData() string {
return message(&fm, tsdSegment) return message(&fm, tsdSegment)
} }
func (pd *ProductionDrop) MaxBundle() string {
return fmt.Sprintf("+34%04d", pd.maxBundle)
}
func (pd *ProductionDrop) SetMaxBundle(maxBundle int) {
pd.maxBundle = maxBundle
}
func (pd *ProductionDrop) ParameterN() string {
return fmt.Sprintf("+33%04d", pd.parameterN)
}
func (pd *ProductionDrop) SetParameterN(parameterN int) {
pd.parameterN = parameterN
}
func (pd *ProductionDrop) Standard() string {
return fmt.Sprintf("+32%04d", pd.standard)
}
func (pd *ProductionDrop) SetStandard(standard int) {
pd.standard = standard
}
func (pd *ProductionDrop) MaxStack() string {
return fmt.Sprintf("+31%04d", pd.maxStack)
}
func (pd *ProductionDrop) SetMaxStack(maxStack int) {
pd.maxStack = maxStack
}
func (pd *ProductionDrop) Limit() string {
return fmt.Sprintf("+30%04d", pd.limit)
}
func (pd *ProductionDrop) SetLimit(limit int) {
pd.limit = limit
}
func (pd *ProductionDrop) ParameterSz() string {
return fmt.Sprintf("+35%04d", pd.parameterSz)
}
func (pd *ProductionDrop) SetParameterSz(parameterSz int) {
pd.parameterSz = parameterSz
}
// SetTopsheetData sets the topsheet data to a given string
func (pd *ProductionDrop) SetTopsheetData(topsheetData string) { func (pd *ProductionDrop) SetTopsheetData(topsheetData string) {
pd.topsheetData = topsheetData pd.topsheetData = topsheetData
} }
// ProductReferenceNumbers returns the string of TSL-formatted ProductReferenceNumbers func (pd *ProductionDrop) SetDontProduce() {
func (pd *ProductionDrop) ProductReferenceNumbers() string { pd.dontProduce = true
var prreffmt string
for _, pr := range pd.productReferenceNumbers {
prreffmt += fmt.Sprintf("+99141%03d", pr)
}
return prreffmt
} }
// AddProductReferenceNumber adds a numeric ProductReferenceNumber to the production drop
func (pd *ProductionDrop) AddProductReferenceNumber(productReferenceNumber int) {
pd.productReferenceNumbers = append(pd.productReferenceNumbers, productReferenceNumber)
}
// NumberOfCopies returns the formatted number of copies in the route
func (pd *ProductionDrop) NumberOfCopies() string { func (pd *ProductionDrop) NumberOfCopies() string {
return fmt.Sprintf("+13%05d", pd.numberOfCopies) return fmt.Sprintf("+13%05d", pd.numberOfCopies)
} }
// SetNumberOfCopies sets the number of copies in the production drop
func (pd *ProductionDrop) SetNumberOfCopies(numberOfCopies int) { func (pd *ProductionDrop) SetNumberOfCopies(numberOfCopies int) {
pd.numberOfCopies = numberOfCopies pd.numberOfCopies = numberOfCopies
} }
// AgentName returns the formatted agent name
func (pd *ProductionDrop) AgentName() string { func (pd *ProductionDrop) AgentName() string {
return fmt.Sprintf("+12%-10s", pd.agentName) return fmt.Sprintf("+12%-10s", pd.agentName)
} }
// SetAgentName sets the agent name to a given string
func (pd *ProductionDrop) SetAgentName(agentName string) { func (pd *ProductionDrop) SetAgentName(agentName string) {
pd.agentName = agentName pd.agentName = agentName
} }
// NewProductionDrop instantiates a new production drop
// struct and returns a pointer to it.
func NewProductionDrop() *ProductionDrop { func NewProductionDrop() *ProductionDrop {
pd := ProductionDrop{ pd := ProductionDrop{
FeragMessage: FeragMessage{ FeragMessage: FeragMessage{
@ -140,24 +65,13 @@ func NewProductionDrop() *ProductionDrop {
return &pd return &pd
} }
// Payload returns the formatted FERAG string
// for embedding in the message
func (pd *ProductionDrop) Payload() string { func (pd *ProductionDrop) Payload() string {
data := pd.AgentName() data := pd.AgentName()
data += pd.NumberOfCopies() data += pd.NumberOfCopies()
data += pd.ControlCharacters.GetControlCharactersMessage() data += pd.ControlCharacters.GetControlCharactersMessage()
data += pd.Limit()
data += pd.MaxStack()
data += pd.Standard()
data += pd.ParameterN()
data += pd.MaxBundle()
data += pd.ParameterSz()
data += pd.ProductReferenceNumbers()
return data return data
} }
// Message returns the formatted FERAG string
// for the production drop
func (pd *ProductionDrop) Message() string { func (pd *ProductionDrop) Message() string {
message := pd.FeragMessage.MessageTemplate() message := pd.FeragMessage.MessageTemplate()
return message(&pd.FeragMessage, pd.Payload()) return message(&pd.FeragMessage, pd.Payload())

View file

@ -117,10 +117,6 @@ func (ri *Route) SetTopsheetTemplateDirectory(topsheetTemplateDirectory int) {
ri.topsheetTemplateDirectory = topsheetTemplateDirectory ri.topsheetTemplateDirectory = topsheetTemplateDirectory
} }
func (ri *Route) SetEditionName(editionName string) {
ri.editionName = editionName
}
func NewRoute() *Route { func NewRoute() *Route {
r := Route{ r := Route{
rampNumber: -1, rampNumber: -1,

View file

@ -11,7 +11,6 @@ type TitleInfo struct {
printObjectName string printObjectName string
titleName string titleName string
publicationDate time.Time publicationDate time.Time
issueReference string
countryCode string countryCode string
printObjectColor string printObjectColor string
additionalInfo string additionalInfo string
@ -98,24 +97,12 @@ func (ti *TitleInfo) Payload() string {
data := ti.PrintObjectName() data := ti.PrintObjectName()
data += ti.TitleName() data += ti.TitleName()
data += ti.PublicationDate() data += ti.PublicationDate()
data += ti.IssueReference()
data += ti.CountryCode() data += ti.CountryCode()
data += ti.PrintObjectColor() data += ti.PrintObjectColor()
data += ti.AdditionalInfo() data += ti.AdditionalInfo()
return data return data
} }
func (ti *TitleInfo) SetIssueReference(issueReference string) {
ti.issueReference = issueReference
}
func (ti *TitleInfo) IssueReference() string {
if ti.issueReference == "" {
return ""
}
return fmt.Sprintf("+99195%8s", ti.issueReference)
}
// PrintObjectName returns the print object name segment (+93) FERAG-formatted // PrintObjectName returns the print object name segment (+93) FERAG-formatted
func (ti *TitleInfo) PrintObjectName() string { func (ti *TitleInfo) PrintObjectName() string {
if ti.printObjectName == "" { if ti.printObjectName == "" {