Compare commits

..

10 commits

Author SHA1 Message Date
1809aed887 Renamed module from github.com/jakoubek/feragstring to git.sr.ht/~jakoubek/feragstring 2024-04-16 20:24:06 +02:00
4304874fa6 Show Issue Reference in Product Reference only if set
Fixes #18
2023-03-24 17:04:48 +01:00
5037c728bc Support Issue Reference in Title Info
Fixes #12
2023-03-24 17:04:31 +01:00
e8d1c806fc Added bundle parameters to production drop
Fixes #17
2023-03-24 16:03:31 +01:00
7483232487 Remove obsolete segment +99102 (scatter)
Fixes #16
2023-03-24 16:01:45 +01:00
b34df92d7e Add Edition name to route
Fixes #15
2023-03-24 16:01:03 +01:00
4b2dda8301 Add products with a product reference number
A product reference number is only assigned (and the central counter incremented) if the product has no product reference number attached.
Fixes #14
2023-03-24 09:00:44 +01:00
0a14f56ddb Added product reference numbers to production drops. Fixes #13 2023-03-24 08:55:06 +01:00
Oliver Jakoubek
9c4df123df Removed attribute dontProduce from production drop. Fixes #3 2020-07-09 11:42:54 +02:00
Oliver Jakoubek
2fda0e577e Added comments to Production Drop. Fixes #10 2020-07-09 11:41:49 +02:00
8 changed files with 127 additions and 16 deletions

View file

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

View file

@ -1,5 +1,3 @@
[![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 ;-)
@ -83,7 +81,7 @@ feragString := fs.PrintOut()
## Installation
```bash
go get -u github.com/jakoubek/feragstring
go get -u git.sr.ht/~jakoubek/feragstring
```
## Need commercial support?

View file

@ -84,8 +84,10 @@ 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 {
fs.ProductReferencesNr++
pr.SetProductReferenceNumber(fs.ProductReferencesNr)
if pr.productReferenceNumber == 0 {
fs.ProductReferencesNr++
pr.SetProductReferenceNumber(fs.ProductReferencesNr)
}
if pr.productReferenceNumber == 1 && pr.productUsageType == 0 {
pr.SetProductUsageType(1)
}

2
go.mod
View file

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

View file

@ -31,6 +31,9 @@ func NewMissingParameter(missingRate, missingSize int) MissingParameter {
}
func (pr *ProductReference) IssueReference() string {
if pr.issueReference == "" {
return ""
}
return fmt.Sprintf("+99195%-8s", pr.issueReference)
}
@ -47,7 +50,7 @@ func (pr *ProductReference) SetMissingParameter(missingParameter MissingParamete
}
func (pr *ProductReference) Scatter() string {
return fmt.Sprintf("+99102%06d", pr.scatter)
return fmt.Sprintf("+99276%06d", pr.scatter)
}
func (pr *ProductReference) SetScatter(scatter int) {
@ -119,13 +122,17 @@ func (pr *ProductReference) SetProductName(productName string) {
}
func (pr *ProductReference) ProductReferenceNumber() string {
return fmt.Sprintf("+41%02d", pr.productReferenceNumber)
return fmt.Sprintf("+99141%03d", 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", "!"},
@ -147,7 +154,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

View file

@ -2,15 +2,25 @@ 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
dontProduce bool
topsheetData string
agentName string
numberOfCopies int
ControlCharacters ControlCharacterSet
limit int
maxStack int
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 {
if pd.topsheetData == "" {
return ""
@ -30,30 +40,95 @@ 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
}
func (pd *ProductionDrop) SetDontProduce() {
pd.dontProduce = true
// 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
}
// 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{
@ -65,13 +140,24 @@ 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())

View file

@ -117,6 +117,10 @@ 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,

View file

@ -11,6 +11,7 @@ type TitleInfo struct {
printObjectName string
titleName string
publicationDate time.Time
issueReference string
countryCode string
printObjectColor string
additionalInfo string
@ -97,12 +98,24 @@ 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 == "" {