diff --git a/.idea/feragstring.iml b/.idea/feragstring.iml index 5e764c4..c956989 100644 --- a/.idea/feragstring.iml +++ b/.idea/feragstring.iml @@ -1,6 +1,5 @@ - diff --git a/README.md b/README.md index fd7d6e5..afa9480 100644 --- a/README.md +++ b/README.md @@ -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* 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 ```bash -go get -u git.sr.ht/~jakoubek/feragstring +go get -u github.com/jakoubek/feragstring ``` ## Need commercial support? diff --git a/ferag.go b/ferag.go index 75563fe..a4ce7be 100644 --- a/ferag.go +++ b/ferag.go @@ -84,10 +84,8 @@ func (fs *FeragString) PrintOut() string { // AddProductReference adds a Product Reference instance to the list // of product references of the FeragString func (fs *FeragString) AddProductReference(pr *ProductReference) error { - if pr.productReferenceNumber == 0 { - fs.ProductReferencesNr++ - pr.SetProductReferenceNumber(fs.ProductReferencesNr) - } + fs.ProductReferencesNr++ + pr.SetProductReferenceNumber(fs.ProductReferencesNr) if pr.productReferenceNumber == 1 && pr.productUsageType == 0 { pr.SetProductUsageType(1) } diff --git a/go.mod b/go.mod index ad81db9..e29fa7b 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module git.sr.ht/~jakoubek/feragstring +module github.com/jakoubek/feragstring go 1.14 diff --git a/product_reference.go b/product_reference.go index 0f205b4..8e53de2 100644 --- a/product_reference.go +++ b/product_reference.go @@ -31,9 +31,6 @@ func NewMissingParameter(missingRate, missingSize int) MissingParameter { } func (pr *ProductReference) IssueReference() string { - if pr.issueReference == "" { - return "" - } return fmt.Sprintf("+99195%-8s", pr.issueReference) } @@ -50,7 +47,7 @@ func (pr *ProductReference) SetMissingParameter(missingParameter MissingParamete } 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) { @@ -122,17 +119,13 @@ func (pr *ProductReference) SetProductName(productName 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) { pr.productReferenceNumber = productReferenceNumber } -func (pr *ProductReference) GetProductReferenceNumber() int { - return pr.productReferenceNumber -} - func NewProductReference() *ProductReference { pr := ProductReference{ FeragMessage: FeragMessage{"2450", "!"}, @@ -154,7 +147,7 @@ func (pr *ProductReference) Payload() string { data += pr.Supervision() data += pr.Overlap() data += pr.FeedingMode() - //data += pr.Scatter() + data += pr.Scatter() data += pr.MissingParameter() data += pr.IssueReference() return data diff --git a/production_drop.go b/production_drop.go index 34bcc90..2ae7a01 100644 --- a/production_drop.go +++ b/production_drop.go @@ -2,25 +2,15 @@ package feragstring import "fmt" -// ProductionDrop is the struct for one production drop -// underneath a route type ProductionDrop struct { FeragMessage - agentName string - numberOfCopies int - ControlCharacters ControlCharacterSet - limit int - maxStack int - standard int - parameterN int - maxBundle int - parameterSz int - dontProduce bool - topsheetData string - productReferenceNumbers []int + agentName string + numberOfCopies int + ControlCharacters ControlCharacterSet + dontProduce bool + topsheetData string } -// TopsheetData returns the formatted topsheet data segment func (pd *ProductionDrop) TopsheetData() string { if pd.topsheetData == "" { return "" @@ -40,95 +30,30 @@ func (pd *ProductionDrop) TopsheetData() string { 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) { pd.topsheetData = topsheetData } -// ProductReferenceNumbers returns the string of TSL-formatted ProductReferenceNumbers -func (pd *ProductionDrop) ProductReferenceNumbers() string { - var prreffmt string - for _, pr := range pd.productReferenceNumbers { - prreffmt += fmt.Sprintf("+99141%03d", pr) - } - return prreffmt +func (pd *ProductionDrop) SetDontProduce() { + pd.dontProduce = true } -// 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 { return fmt.Sprintf("+13%05d", pd.numberOfCopies) } -// SetNumberOfCopies sets the number of copies in the production drop func (pd *ProductionDrop) SetNumberOfCopies(numberOfCopies int) { pd.numberOfCopies = numberOfCopies } -// AgentName returns the formatted agent name func (pd *ProductionDrop) AgentName() string { return fmt.Sprintf("+12%-10s", pd.agentName) } -// SetAgentName sets the agent name to a given string func (pd *ProductionDrop) SetAgentName(agentName string) { pd.agentName = agentName } -// NewProductionDrop instantiates a new production drop -// struct and returns a pointer to it. func NewProductionDrop() *ProductionDrop { pd := ProductionDrop{ FeragMessage: FeragMessage{ @@ -140,24 +65,13 @@ func NewProductionDrop() *ProductionDrop { return &pd } -// Payload returns the formatted FERAG string -// for embedding in the message func (pd *ProductionDrop) Payload() string { data := pd.AgentName() data += pd.NumberOfCopies() 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 } -// Message returns the formatted FERAG string -// for the production drop func (pd *ProductionDrop) Message() string { message := pd.FeragMessage.MessageTemplate() return message(&pd.FeragMessage, pd.Payload()) diff --git a/route.go b/route.go index 72980f7..41cefb3 100644 --- a/route.go +++ b/route.go @@ -117,10 +117,6 @@ func (ri *Route) SetTopsheetTemplateDirectory(topsheetTemplateDirectory int) { ri.topsheetTemplateDirectory = topsheetTemplateDirectory } -func (ri *Route) SetEditionName(editionName string) { - ri.editionName = editionName -} - func NewRoute() *Route { r := Route{ rampNumber: -1, diff --git a/title_info.go b/title_info.go index 2478c21..366d3e2 100644 --- a/title_info.go +++ b/title_info.go @@ -11,7 +11,6 @@ type TitleInfo struct { printObjectName string titleName string publicationDate time.Time - issueReference string countryCode string printObjectColor string additionalInfo string @@ -98,24 +97,12 @@ func (ti *TitleInfo) Payload() string { data := ti.PrintObjectName() data += ti.TitleName() data += ti.PublicationDate() - data += ti.IssueReference() data += ti.CountryCode() data += ti.PrintObjectColor() data += ti.AdditionalInfo() 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 func (ti *TitleInfo) PrintObjectName() string { if ti.printObjectName == "" {