Skip to content

Commit

Permalink
This fixed incorrect language info token generation (#6)
Browse files Browse the repository at this point in the history
- Correction currency string token parsing result
- Updates the unit tests, workflow, and the founding info
  • Loading branch information
taomin597715379 authored Aug 19, 2023
1 parent 2d5eeba commit dc951e3
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 19 deletions.
3 changes: 2 additions & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
github: xuri
patreon: xuri
ko_fi: xurime
liberapay: xuri
issuehunt: xuri
custom: https://www.paypal.me/xuri
custom: https://www.paypal.com/paypalme/xuri
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Briefly describe the problem you are having in a few paragraphs.
(paste your output here)
```

**EFP version or commit ID:**
**NFP version or commit ID:**

```text
(paste here)
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
name: Go
on: push
on: [push, pull_request]
jobs:

test:
strategy:
matrix:
go-version: [1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, 1.18.x]
go-version: [1.12.x, 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, 1.18.x, 1.19.x, 1.20.x, 1.21.x]
platform: [ubuntu-latest]
runs-on: ${{ matrix.platform }}
steps:

- name: Set up Go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
id: go
Expand All @@ -30,9 +30,8 @@ jobs:
run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...

- name: Codecov
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v3
with:
token: ${{secrets.CODECOV_TOKEN}}
file: coverage.txt
flags: unittests
name: codecov-umbrella
17 changes: 9 additions & 8 deletions nfp.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,18 +261,19 @@ func (ps *Parser) getTokens() Tokens {
if ps.Token.TType == TokenTypeCurrencyLanguage {
if ps.currentChar() != Dash && ps.currentChar() != BracketClose {
if len(ps.Token.Parts) == 0 {
ps.Token.Parts = append(ps.Token.Parts, Part{Token: Token{TType: TokenSubTypeLanguageInfo}})
ps.Token.Parts = append(ps.Token.Parts, Part{Token: Token{TType: TokenSubTypeCurrencyString}})
}
ps.Token.Parts[len(ps.Token.Parts)-1].Token.TValue += ps.currentChar()
}
if ps.currentChar() == Dash {
if len(ps.Token.Parts) == 1 {
ps.Token.Parts[0].Token.TType = TokenSubTypeCurrencyString
}
if len(ps.Token.Parts) == 1 {
if ps.currentChar() == Dash && ps.nextChar() != BracketClose {
if l := len(ps.Token.Parts); l == 0 {
ps.Token.Parts = append(ps.Token.Parts, Part{Token: Token{TType: TokenSubTypeLanguageInfo}})
} else if len(ps.Token.Parts) > 1 {
ps.Token.Parts[1].Token.TValue += ps.currentChar()
} else {
if ps.Token.Parts[0].Token.TType != TokenSubTypeLanguageInfo && ps.Token.Parts[0].Token.TValue != "" {
ps.Token.Parts = append(ps.Token.Parts, Part{Token: Token{TType: TokenSubTypeLanguageInfo}})
} else {
ps.Token.Parts[l-1].Token.TValue += ps.currentChar()
}
}
}
if ps.currentChar() == Comma {
Expand Down
9 changes: 5 additions & 4 deletions nfp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ var testStrings [][]string = [][]string{
{"@", "[{Text [{@ TextPlaceHolder []}]}]"},
{`**x`, "[{Positive [{* RepeatsChar []} {x Literal []}]}]"},
{`[$-]`, "[{Positive [{[$-] CurrencyLanguage []}]}]"},
{"[$-ja-JP-x-gannen,80]", "[{Positive [{[$-ja-JP-x-gannen,80] CurrencyLanguage [{{ja CurrencyString []} } {{JP-x-gannen,80 LanguageInfo []} }]}]}]"},
{"[$-ja-JP-x-gannen,80]", "[{Positive [{[$-ja-JP-x-gannen,80] CurrencyLanguage [{{ja-JP-x-gannen,80 LanguageInfo []} }]}]}]"},
{"x0.00", "[{Positive [{x Literal []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
{"0.0bc00", "[{Positive [{0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []} {bc Literal []} {00 ZeroPlaceHolder []}]}]"},
{"x00", "[{Positive [{x Literal []} {00 ZeroPlaceHolder []}]}]"},
Expand Down Expand Up @@ -290,7 +290,7 @@ var testStrings [][]string = [][]string{
{`[$-D010000]d/mm/yyyy\ h:mm\ "น.";@`, "[{Positive [{[$-D010000] CurrencyLanguage [{{D010000 LanguageInfo []} }]} {d DateTimes []} {/ Literal []} {mm DateTimes []} {/ Literal []} {yyyy DateTimes []} { Literal []} {h DateTimes []} {: Literal []} {mm DateTimes []} { Literal []} {น. Literal []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`[$-F400]h:mm:ss\ AM/PM`, "[{Positive [{[$-F400] CurrencyLanguage [{{F400 LanguageInfo []} }]} {h DateTimes []} {: Literal []} {mm DateTimes []} {: Literal []} {ss DateTimes []} { Literal []} {AM/PM DateTimes []}]}]"},
{`[$-F800]dddd\,\ mmmm\ dd\,\ yyyy`, "[{Positive [{[$-F800] CurrencyLanguage [{{F800 LanguageInfo []} }]} {dddd DateTimes []} {, Literal []} { Literal []} {mmmm DateTimes []} { Literal []} {dd DateTimes []} {, Literal []} { Literal []} {yyyy DateTimes []}]}]"},
{`[$AUD]\ #,##0.00`, "[{Positive [{[$AUD] CurrencyLanguage [{{AUD LanguageInfo []} }]} { Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
{`[$AUD]\ #,##0.00`, "[{Positive [{[$AUD] CurrencyLanguage [{{AUD CurrencyString []} }]} { Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
{`[$RD$-1C0A]#,##0.00;[Red]\-[$RD$-1C0A]#,##0.00`, "[{Positive [{[$RD$-1C0A] CurrencyLanguage [{{RD$ CurrencyString []} } {{1C0A LanguageInfo []} }]} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]} {Negative [{Red Color []} {- Literal []} {[$RD$-1C0A] CurrencyLanguage [{{RD$ CurrencyString []} } {{1C0A LanguageInfo []} }]} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
{`[$SFr.-810]\ #,##0.00_);[Red]\([$SFr.-810]\ #,##0.00\)`, "[{Positive [{[$SFr.-810] CurrencyLanguage [{{SFr. CurrencyString []} } {{810 LanguageInfo []} }]} { Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]} {Negative [{Red Color []} {( Literal []} {[$SFr.-810] CurrencyLanguage [{{SFr. CurrencyString []} } {{810 LanguageInfo []} }]} { Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} {) Literal []}]}]"},
{`[$£-809]#,##0.00;[Red][$£-809]#,##0.00`, "[{Positive [{[$£-809] CurrencyLanguage [{{£ CurrencyString []} } {{809 LanguageInfo []} }]} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]} {Negative [{Red Color []} {[$£-809] CurrencyLanguage [{{£ CurrencyString []} } {{809 LanguageInfo []} }]} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
Expand Down Expand Up @@ -419,7 +419,7 @@ var testStrings [][]string = [][]string{
{`_(* #,##0.0_);_(* \(#,##0.0\);_(* "-"??_);_(@_)`, "[{Positive [{ RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []}]} {Negative [{ RepeatsChar []} {( Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []} {) Literal []}]} {Zero [{ RepeatsChar []} {- Literal []} {?? DigitalPlaceHolder []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_(* #,##0_);_(* \(#,##0\);_(* "-"??_);_(@_)`, "[{Positive [{ RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []}]} {Negative [{ RepeatsChar []} {( Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {) Literal []}]} {Zero [{ RepeatsChar []} {- Literal []} {?? DigitalPlaceHolder []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)`, "[{Positive [{ RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []}]} {Negative [{ RepeatsChar []} {( Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {) Literal []}]} {Zero [{ RepeatsChar []} {- Literal []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_([$ANG]\ * #,##0.0_);_([$ANG]\ * \(#,##0.0\);_([$ANG]\ * "-"?_);_(@_)`, "[{Positive [{[$ANG] CurrencyLanguage [{{ANG LanguageInfo []} }]} { Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []}]} {Negative [{[$ANG] CurrencyLanguage [{{ANG LanguageInfo []} }]} { Literal []} { RepeatsChar []} {( Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []} {) Literal []}]} {Zero [{[$ANG] CurrencyLanguage [{{ANG LanguageInfo []} }]} { Literal []} { RepeatsChar []} {- Literal []} {? DigitalPlaceHolder []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_([$ANG]\ * #,##0.0_);_([$ANG]\ * \(#,##0.0\);_([$ANG]\ * "-"?_);_(@_)`, "[{Positive [{[$ANG] CurrencyLanguage [{{ANG CurrencyString []} }]} { Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []}]} {Negative [{[$ANG] CurrencyLanguage [{{ANG CurrencyString []} }]} { Literal []} { RepeatsChar []} {( Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {0 ZeroPlaceHolder []} {) Literal []}]} {Zero [{[$ANG] CurrencyLanguage [{{ANG CurrencyString []} }]} { Literal []} { RepeatsChar []} {- Literal []} {? DigitalPlaceHolder []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_-"€"\ * #,##0.00_-;_-"€"\ * #,##0.00\-;_-"€"\ * "-"??_-;_-@_-`, "[{Positive [{€ Literal []} { Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]} {Negative [{€ Literal []} { Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} {- Literal []}]} {Zero [{€ Literal []} { Literal []} { RepeatsChar []} {- Literal []} {?? DigitalPlaceHolder []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_-* #,##0.00" TL"_-;\-* #,##0.00" TL"_-;_-* \-??" TL"_-;_-@_-`, "[{Positive [{ RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} { TL Literal []}]} {Negative [{- Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} { TL Literal []}]} {Zero [{ RepeatsChar []} {- Literal []} {?? DigitalPlaceHolder []} { TL Literal []}]} {Text [{@ TextPlaceHolder []}]}]"},
{`_-* #,##0.00" €"_-;\-* #,##0.00" €"_-;_-* \-??" €"_-;_-@_-`, "[{Positive [{ RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} { € Literal []}]} {Negative [{- Literal []} { RepeatsChar []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []} { € Literal []}]} {Zero [{ RepeatsChar []} {- Literal []} {?? DigitalPlaceHolder []} { € Literal []}]} {Text [{@ TextPlaceHolder []}]}]"},
Expand Down Expand Up @@ -523,7 +523,8 @@ var testStrings [][]string = [][]string{
{`yyyy\-mm\-dd\ h:mm`, "[{Positive [{yyyy DateTimes []} {- Literal []} {mm DateTimes []} {- Literal []} {dd DateTimes []} { Literal []} {h DateTimes []} {: Literal []} {mm DateTimes []}]}]"},
{`yyyy\-mm\-dd\Thh:mm`, "[{Positive [{yyyy DateTimes []} {- Literal []} {mm DateTimes []} {- Literal []} {dd DateTimes []} {T Literal []} {hh DateTimes []} {: Literal []} {mm DateTimes []}]}]"},
{`yyyy\-mm\-dd\Thhmmss.000`, "[{Positive [{yyyy DateTimes []} {- Literal []} {mm DateTimes []} {- Literal []} {dd DateTimes []} {T Literal []} {hh DateTimes []} {mm DateTimes []} {ss DateTimes []} {. DecimalPoint []} {000 ZeroPlaceHolder []}]}]"},
{`[DBNum1][$-zh-CN]h"时"mm"分";"====="@@@"--"@"----"`, "[{Positive [{[DBNum1] SwitchArgument []} {[$-zh-CN] CurrencyLanguage [{{zh CurrencyString []} } {{CN LanguageInfo []} }]} {h DateTimes []} {时 Literal []} {mm DateTimes []} {分 Literal []}]} {Text [{===== Literal []} {@ TextPlaceHolder []} {@ TextPlaceHolder []} {@ TextPlaceHolder []} {-- Literal []} {@ TextPlaceHolder []} {---- Literal []}]}]"},
{`[DBNum1][$-zh-CN]h"时"mm"分";"====="@@@"--"@"----"`, "[{Positive [{[DBNum1] SwitchArgument []} {[$-zh-CN] CurrencyLanguage [{{zh-CN LanguageInfo []} }]} {h DateTimes []} {时 Literal []} {mm DateTimes []} {分 Literal []}]} {Text [{===== Literal []} {@ TextPlaceHolder []} {@ TextPlaceHolder []} {@ TextPlaceHolder []} {-- Literal []} {@ TextPlaceHolder []} {---- Literal []}]}]"},
{"[$ZWR]\\ #,##0.00", "[{Positive [{[$ZWR] CurrencyLanguage [{{ZWR CurrencyString []} }]} { Literal []} {# HashPlaceHolder []} {, ThousandsSeparator []} {## HashPlaceHolder []} {0 ZeroPlaceHolder []} {. DecimalPoint []} {00 ZeroPlaceHolder []}]}]"},
}

func TestNFP(t *testing.T) {
Expand Down

0 comments on commit dc951e3

Please sign in to comment.