Skip to content

Commit

Permalink
"Snake" filename case option
Browse files Browse the repository at this point in the history
* Adds `snake` case option for cli and core.
* Adds `snake` case option to website docs.
* Adds `snake` case option to cli tests.
* Adds `snake` case option to cli readme.
  • Loading branch information
Joe Gores committed Apr 17, 2023
1 parent 5990dae commit 428cf01
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 3 deletions.
2 changes: 1 addition & 1 deletion packages/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Options:
-d, --out-dir <dirname> output files into a directory
--ignore-existing ignore existing files when used with --out-dir
--ext <ext> specify a custom file extension (default: "js")
--filename-case <case> specify filename case ("pascal", "kebab", "camel") (default: "pascal")
--filename-case <case> specify filename case ("pascal", "kebab", "camel", "snake") (default: "pascal")
--icon use "1em" as width and height
--native add react-native support with react-native-svg
--memo add React.memo into the result component
Expand Down
10 changes: 10 additions & 0 deletions packages/cli/src/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,16 @@ exports[`cli should support different filename cases with directory output: --fi
]
`;

exports[`cli should support different filename cases with directory output: --filename-case=snake 1`] = `
[
"camel_case.js",
"index.js",
"kebab_case.js",
"multiple_dashes.js",
"pascal_case.js",
]
`;

exports[`cli should support stdin filepath 1`] = `
"import * as React from 'react'
const SvgFile = (props) => (
Expand Down
1 change: 1 addition & 0 deletions packages/cli/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ describe('cli', () => {
[1, '--filename-case=camel'],
[2, '--filename-case=pascal'],
[3, '--filename-case=kebab'],
[4, '--filename-case=snake'],
])(
'should support different filename cases with directory output',
async (index, args) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ program
.option('--ext <ext>', 'specify a custom file extension (default: "js")')
.option(
'--filename-case <case>',
'specify filename case ("pascal", "kebab", "camel") (default: "pascal")',
'specify filename case ("pascal", "kebab", "camel", "snake") (default: "pascal")',
)
.option(
'--icon [size]',
Expand Down
2 changes: 2 additions & 0 deletions packages/cli/src/util.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ describe('util', () => {
expect(transformFilename('FooBar', 'camel')).toBe('fooBar')
expect(transformFilename('FooBar', 'kebab')).toBe('foo-bar')
expect(transformFilename('FooBar', 'pascal')).toBe('FooBar')
expect(transformFilename('FooBar', 'snake')).toBe('foo_bar')

expect(transformFilename('foo_bar', 'camel')).toBe('fooBar')
expect(transformFilename('foo_bar', 'kebab')).toBe('foo-bar')
expect(transformFilename('foo_bar', 'pascal')).toBe('FooBar')
expect(transformFilename('foo_bar', 'snake')).toBe('foo_bar')
})
})

Expand Down
3 changes: 3 additions & 0 deletions packages/cli/src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import prettier from '@svgr/plugin-prettier'
import camelCase from 'camelcase'
// @ts-ignore
import dashify from 'dashify'
import { snakeCase } from 'snake-case'

export function transformFilename(
filename: string,
Expand All @@ -21,6 +22,8 @@ export function transformFilename(
return camelCase(filename)
case 'pascal':
return camelCase(filename, { pascalCase: true })
case 'snake':
return snakeCase(filename)
default:
throw new Error(`Unknown --filename-case ${filenameCase}`)
}
Expand Down
2 changes: 1 addition & 1 deletion website/pages/docs/options.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ When used with `--out-dir`, it ignores already existing files.

## Filename case

Specify a custom filename case. Possible values: `pascal` for PascalCase, `kebab` for kebab-case or `camel` for camelCase.
Specify a custom filename case. Possible values: `pascal` for PascalCase, `kebab` for kebab-case, `camel` for camelCase, or `snake` for snake_case.

| Default | CLI Override | API Override |
| -------- | ----------------- | ---------------------- |
Expand Down

0 comments on commit 428cf01

Please sign in to comment.