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"?>
<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,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?

View file

@ -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)
}
if pr.productReferenceNumber == 1 && pr.productUsageType == 0 {
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

View file

@ -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

View file

@ -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
}
// 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())

View file

@ -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,

View file

@ -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 == "" {