Skip to content

Commit

Permalink
Merge pull request #31 from sphereio/support_full_locale_tags
Browse files Browse the repository at this point in the history
Support full locale tags
  • Loading branch information
hajoeichler committed Sep 12, 2015
2 parents f29a04b + d8ae9db commit 856027c
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 14 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ tmp
.coveralls.yml
coverage
package
.idea
2 changes: 1 addition & 1 deletion data/sample-product-types-attributes.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name,type,attributeConstraint,isRequired,isSearchable,label.de,label.en,enumKey,enumLabel,enumLabel.en,enumLabel.de,textInputHint
name,type,attributeConstraint,isRequired,isSearchable,label.de,label.en-US,enumKey,enumLabel,enumLabel.en-US,enumLabel.de,textInputHint
designer,enum,None,false,false,Designer,designer,HUG,Hugo Boss,,,
,,,,,,,DUG,Dolce&Gabana,,,
gender,lenum,Unique,false,false,Geschlecht,gender,M,,male,männlich,
Expand Down
2 changes: 1 addition & 1 deletion src/coffee/product-type-generator.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ class ProductTypeGenerator
* @return {Array} The mapped list of languages
###
_languages: (name, headers) ->
regexp = new RegExp("^#{name}\.[a-zA-Z]{2}", 'i')
regexp = new RegExp("^#{name}\.([a-zA-Z]{2})(-[a-zA-Z]{2})?", 'i')
languages = (header) ->
# `match` will return null if there is no match, otherwise it returns an array with the matched group
# In this case it will output this
Expand Down
50 changes: 38 additions & 12 deletions src/spec/producttypegenerator.spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ describe 'ProductTypeGenerator', ->
it 'should return no languages for not localized property header', ->
expect(@generator._languages('name', ['name', 'label.de', 'label.en', 'enumlabel.de', 'enumlabel.en', 'enumlabel.it'])).toEqual []

it 'should return full locale codes for localized property header', ->
expect(@generator._languages('label', ['name', 'label.de-DE', 'label.en-US', 'enumlabel.de-DE', 'enumlabel.en-US', 'enumlabel.it-IT'])).toEqual ['de-DE', 'en-US']


it 'should return full locale codes and languages for localized property header', ->
expect(@generator._languages('label', ['name', 'label.de', 'label.en-US', 'enumlabel.de', 'enumlabel.en-US', 'enumlabel.it-IT'])).toEqual ['de', 'en-US']



it 'should return an object with localized values', ->

attributeRow =
Expand All @@ -28,6 +37,23 @@ describe 'ProductTypeGenerator', ->

expect(@generator._i18n(attributeRow, 'label')).toEqual {de: 'Geschlecht', en: 'gender'}


it 'should return an object with localized values using full locales and languages', ->

attributeRow =
name: 'gender'
type: 'lenum'
attributeConstraint: 'None'
isRequired: 'false'
isSearchable: 'false'
'label.de-DE': 'Geschlecht'
'label.en': 'gender'
enumKey: 'M'
'enumLabel.en': 'male'
'enumLabel.de-DE': 'männlich'

expect(@generator._i18n(attributeRow, 'label')).toEqual {"de-DE": 'Geschlecht', en: 'gender'}

it 'should return an object with no localized values', ->
expect(@generator._i18n(['name', 'label.de', 'label.en', 'enumlabel.de', 'enumlabel.en', 'enumlabel.it'], 'name')).toEqual []

Expand All @@ -40,14 +66,14 @@ describe 'ProductTypeGenerator', ->
isRequired: 'false'
isSearchable: 'false'
textInputHint: 'MultiLine'
'label.de': 'Beschreibung'
'label.de-DE': 'Beschreibung'
'label.en': 'Description'

expectedAttributeDefinition =
description:
name: 'description'
label:
de: 'Beschreibung'
'de-DE': 'Beschreibung'
en: 'Description'
type:
name: 'text'
Expand All @@ -67,14 +93,14 @@ describe 'ProductTypeGenerator', ->
isRequired: 'false'
isSearchable: 'false'
textInputHint: 'MultiLine'
'label.de': 'Beschreibung'
'label.de-DE': 'Beschreibung'
'label.en': 'Description'

expectedAttributeDefinition =
description:
name: 'description'
label:
de: 'Beschreibung'
'de-DE': 'Beschreibung'
en: 'Description'
type:
name: 'ltext'
Expand Down Expand Up @@ -133,9 +159,9 @@ describe 'ProductTypeGenerator', ->
isRequired: 'false'
isSearchable: 'false'
'label.de': 'Geschlecht'
'label.en': 'gender'
'label.en-US': 'gender'
enumKey: 'M'
'enumLabel.en': 'male'
'enumLabel.en-US': 'male'
'enumLabel.de': 'männlich'

attributeRow2 =
Expand All @@ -145,9 +171,9 @@ describe 'ProductTypeGenerator', ->
isRequired: ''
sSearchable: ''
'label.de': ''
'label.en': ''
'label.en-US': ''
enumKey: 'W'
'enumLabel.en': 'female'
'enumLabel.en-US': 'female'
'enumLabel.de': 'weiblich'

attributeRow3 =
Expand All @@ -157,20 +183,20 @@ describe 'ProductTypeGenerator', ->
isRequired: ''
isSearchable: ''
'label.de': ''
'label.en': ''
'label.en-US': ''
enumKey: 'U'
'enumLabel.en': 'unisex'
'enumLabel.en-US': 'unisex'
'enumLabel.de': 'unisex'

expectedAttributeDefinition =
gender:
name: 'gender'
label:
de: 'Geschlecht'
en: 'gender'
'en-US': 'gender'
type:
name: 'lenum'
values: [{ key: 'M', label: de: 'männlich', en: 'male' }, { key: 'W', label: de: 'weiblich', en: 'female' }, { key: 'U', label: de: 'unisex', en: 'unisex' }]
values: [{ key: 'M', label: de: 'männlich', 'en-US': 'male' }, { key: 'W', label: de: 'weiblich', 'en-US': 'female' }, { key: 'U', label: de: 'unisex', 'en-US': 'unisex' }]
attributeConstraint: 'None'
isRequired: false
isSearchable: false
Expand Down

0 comments on commit 856027c

Please sign in to comment.