2016-06-17 22 views

risposta

14

Molti non sanno che questo è incorporato in Elixir:

iex> Macro.underscore "SAPExample" 
"sap_example" 

iex> Macro.camelize "sap_example" 
"SapExample" 

iex> Macro.camelize "hello_10" 
"Hello10" 

vedi Documentazione: http://elixir-lang.org/docs/stable/elixir/Macro.html#underscore/1

Implementazione: https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/macro.ex#L1192

+0

Cheers! Ho pensato che dovrebbe essere nella lingua, semplicemente non mi aspettavo che fosse nel modulo Macro :) – Nomad

+3

Questo perché non dovrebbe essere usato dalle librerie generali. 'Non usarlo come meccanismo generale per la camerizzazione delle stringhe poiché non supporta Unicode o caratteri che non sono validi negli identificatori Elixir. – Mattias

1

Uno potrebbe utilizzare Macro.underscore/1, ma non è il modo corretto per farlo. Dal momento che il modulo Macrostates:

Questa funzione è stata progettata per sottolineare la lingua identificatori/gettoni, è per questo che appartiene al modulo Macro. Non utilizzarlo come meccanismo generale per sottolineare le stringhe poiché non supporta caratteri Unicode o non validi negli identificatori Elixir.

Quindi, è meglio utilizzare qualche altra libreria. Vorrei raccomandare di utilizzare recase. Può convertire string in ogni caso, non solo camelCase.

Poiché è una libreria di terze parti, è necessario installarla.

  1. aggiungere questa linea al mix.exs in deps: {:recase, "~> 0.1"}
  2. corsa mix deps.get

Ecco come lo si utilizza:

Recase.to_camel("some-value") 
# => "someValue" 

Recase.to_camel("Some Value") 
# => "someValue" 

Potete trovare documentazione qui: https://hexdocs.pm/recase/readme.html

E il repository qui: https://github.com/sobolevn/recase